我为我的应用创建了一项服务,用于获取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函数。
答案 0 :(得分:0)
我的建议是保留在$rootScope isLoggedIn
属性中,并使用它们,在其上分配您的响应值,并在控制器中使用
$rootScope.$watch('isLoggedIn',function(){
// your logic goes here
})