我有一个应用程序,如果用户没有登录,某些路由会被限制。这是我的运行功能:
function run($rootScope, $location, UserService) {
var homeRoute = '/';
$rootScope.$on('$locationChangeStart', function(event, next, current) {
var isPageRestricted = $.inArray($location.path(), [homeRoute, '']) === -1;
if (!isPageRestricted) {
return;
}
UserService
.verifyUserToken()
.then(function(data) {
var userData;
if (data.valid) {
$rootScope.userData = $rootScope.userData || UserService.getUserTokenAndData();
} else {
$rootScope.userData = null;
$location.path(homeRoute);
}
})
.catch(function() {
$rootScope.userData = null;
$location.path(homeRoute);
});
});
}
如您所见,当用户输入受限制的路由时,我会向服务器发送请求以验证其令牌。如果令牌有效,我会将用户的数据存储到$rootScope.userData
。然后,在我的一个受限制的视图中,我得到$rootScope.userData
在开始时为null
,在页面刷新后为非null。我认为这是因为操作的异步性质。使它运作的最佳方法是什么?
感谢。