2014-09-05 46 views
0

我爲我的應用程序創建了一項服務,用於獲取PHP會話信息以驗證用戶是否已登錄。該服務的代碼如下。Angular.js驗證服務:等待資源迴應

angular.module('omApp') 
    .factory 'Auth', ['AuthResource', '$rootScope', '$location', (AuthResource, $rootScope, $location) -> 
    user = AuthResource.get() 

    # TODO: Setup permissions in database and load them 
    # permissions = AuthResource.get() 
    Auth = 
     user: user 
     signedIn: -> 
     user.id > 0 
     logout: -> 
     window.location = '/login/login.php' 

    $rootScope.signedIn = -> 
     Auth.signedIn() 
    $rootScope.authUser = Auth.user 

    return Auth 
] 

對於需要登錄用戶的控制器,我想要做類似if not signedIn() then logout()的操作。我的問題是,這個代碼在我的資源實際加載之前運行,所以無論如何,我都會重定向到登錄屏幕。我知道AuthResource.get()產生了一個承諾,但在這種情況下,我不知道如何使用它並提供signedIn和logout函數。

回答

0

我的建議是保持$rootScope isLoggedIn財產,並與他們合作,對指定的響應值,並在你的控制器使用

$rootScope.$watch('isLoggedIn',function(){ 
// your logic goes here 
}) 
+0

我仍然有它的權威性響應之前執行的檢查相同的問題來自PHP。 – Sean 2014-09-05 20:43:45