我是 Angular 7 的新手,面临一个我无法弄清楚为什么会发生的问题。
我希望在每次重定向之后RouteGuard都会检查令牌是否有效。为此,我编写了以下服务;
getUserClaims():Promise<any> {
/*return new Promise((resolve, reject) => {
this._http.get(ALCA_Utility.API_BASE_URL + 'User/GetCurrentUser')
.toPromise()
.then(
res => { // Success
resolve(res)
}
);
});*/
return this._http.get(ALCA_Utility.API_BASE_URL + 'User/GetCurrentUser')
.toPromise();
}
我尝试了这两种方法,(我注释掉了上面的方法,还HTTP_INTERCEPTORS用来拦截 HTTP 调用并在 Authorization 标头中添加令牌)。
canActive方法如下;
canActivate(
next: ActivatedRouteSnapshot,
state: RouterStateSnapshot): boolean {
if (sessionStorage.getItem('userToken') != null) {
this._auth.getUserClaims().then((data) => {
if (data.PK_UserID != null && data.PK_UserID > 0) {
alert(1)
return true
}
else{
alert(2)
return false
}
alert(3)
})
alert(4)
}
else {
this._router.navigate(['/login']);
return false;
}
}
我认为这些方法将按顺序执行canActive,但是,它显示警报 4,然后是 1、2、3。
我不明白为什么会这样?