错误:
是的我知道有类似的帖子,但他们没有解决我的问题。我想完全控制应用程序的路由。我的代码如下:
需要注意的一点是,我已将自定义属性附加到名为authenticate的状态,该状态具有true
或false
值。我还创建了一个简单的函数get user
。它只是从api中检索用户。
$rootScope.$on('$stateChangeStart', function(event, toState) {
event.preventDefault();
let token = $cookies.get('token');
if (toState.authenticate) {
if (token) {
getUser()
.then(user => {
$rootScope.user = user;
$state.go(toState.name);
})
.catch(err => console.log(err));
} else {
$state.go('login');
}
} else {
$state.go(toState.name);
}
});
我首先检查状态是否需要身份验证。如果不是,我们只是继续到州。如果确实需要身份验证,我们会检查是否有令牌。如果有我们使用我前面提到的功能获取用户。如果没有令牌,我们会将用户发送到登录状态。