Angular.js身份验证服务:等待资源响应

时间:2014-09-05 15:52:14

标签: angularjs authentication coffeescript

我为我的应用创建了一项服务,用于获取PHP会话信息以验证用户是否已登录。该服务的代码如下所示。

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()会产生一个promise,但在这种情况下,我不知道如何使用它并提供signedIn和logout函数。

1 个答案:

答案 0 :(得分:0)

我的建议是保留在$rootScope isLoggedIn属性中,并使用它们,在其上分配您的响应值,并在控制器中使用

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