【发布时间】:2020-04-14 21:14:15
【问题描述】:
我正在尝试使用userService 来实现防护以获取所需的信息。目前UserService 看起来像这样:
getUserDetails(): Observable<User> {
this.requestUrl = `${configs.bgwssApi}v1/user/details`;
return this.http.get<User>(this.requestUrl).pipe(catchError(this.handleError));
}
isBoardMember(): Observable<boolean> {
this.getUserDetails().pipe(
map(data => {
if (data.userRole !== 'MEMBER') {
return of(false);
}
console.log(data); //Not printed
})
);
return of(true);
}
getUserDetails 工作正常,它返回所需的信息。但是isBoardMember 总是返回true,因为我注意到它甚至没有检查userRole。这里可能是什么问题?如何修复 isBoardMember 使其返回正确的值,因为稍后我的警卫会执行这样的检查,顺便说一句,它工作正常:
canActivate(route: ActivatedRouteSnapshot,
state: RouterStateSnapshot): Observable<boolean> {
return this.userService.isBoardMember().pipe(
map(data => {
if (data === false) {
this.router.navigate(['main']);
return false;
}
return true;
})
);
}
【问题讨论】:
标签: angular typescript angular-router-guards