我正在使用OAuth2协议处理应用程序,我遇到了UI.router模块的问题。
实际上,在每个状态发生变化之前,我需要测试访问令牌是否存储在sessionStorage中。所以我使用像这样的run
函数:
.run(['$state', '$window', '$location', '$rootScope', function ($state, $window, $location, $rootScope) {
$rootScope.$on('$stateChangeStart',
function (event, toState, toParams, fromState, fromParams) {
var accesstoken = sessionStorage.getItem('access_token');
if (!accesstoken) {
if ($location.url() !== '/access/connexion') {
$state.go('access.connexion', null, { reload: true });
}
}
});
}])
我们现在承认我没有连接,我尝试访问像/ users / 12355这样没有访问令牌的网址:
事实是URL刷新,从/ users / 12355传递到/ access / connexion,但视图仍然是/ users / 12355对应的视图(没有加载任何信息,因为我没有访问令牌)
我不知道问题是什么......
此外,如果console.log
位于$state.go
之上,我似乎在此日志中传递了400次。如果我删除$state.go
函数,我只会传递一次......
你能帮助我吗?
注意:access.connexion是根状态