Я новичок в работе с 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-вызовов и добавления токена взаголовок авторизации) .
Ниже приведен метод 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.
Я не понимаю, почему это происходит?