function loadUserCredentials() {
var token = new Object();
token.token = window.localStorage.getItem(LOCAL_TOKEN_KEY);
$http.post("http://localhost:8080/checkTokenValid",token).then(function(result){
console.log(result.data.success);
if(result.data.success){
useCredentials();
}
});
};
每次页面刷新时都会加载loadCredentials()
,我正在检查是否在angular.run
controlApp.run(function ($location, $rootScope,controlProvider){
$rootScope.$on('$routeChangeStart',function(event,next,nextParems){
if (!controlProvider.isAuthenticated()){
$location.path('/login');
}
})
});
我认为这是在loadCredentials
完成之前运行的,所以我总是得到登录页面。有什么方法可以推迟angular.run
吗?这样我可以让loadCredentials
检查用户是否拥有有效令牌。
答案 0 :(得分:2)
是的,你可以通过$ timeout来做到这一点:
controlApp.run(function ($location, $rootScope, controlProvider, $timeout) {
$rootScope.$on('$routeChangeStart', function (event, next, nextParems) {
$timeout(function () {
if (!controlProvider.isAuthenticated()) {
$location.path('/login');
}
}, 500);
})
});