我正在尝试实现路由应该有警卫,(具体访问或角色基础)
这是我的AdminGuard,当路由仅适用于具有' admin'的用户时使用。作为权威,
@Injectable()
export class AdminGuard implements CanActivate {
constructor(private router: Router) { }
canActivate(route: ActivatedRouteSnapshot): Observable<boolean> {
//forget about: how to get the authority of user (I have kept it in shared service)
if (this.sharedService.user.authority == 'admin') {
return Observable.of(true);
}
else {
return Observable.of(false);
}
}
}
现在,我想说,每当可观察到的返回错误时,它应该导航到&#34;未经授权的&#34;成分
我的用户没有访问权限信息。
我正在考虑如何做到这一点,一个解决方案是在返回之前我可以通过以下方式更改路线:
canActivate(route: ActivatedRouteSnapshot): Observable<boolean> {
if (this.sharedService.user.authority == 'admin') {
return Observable.of(true);
}
else {
this.router.navigate(['/unauthorized']);
return Observable.of(false);
}
}
但我发现这种解决方案不是最佳方式。
打开任何替代解决方案,提前致谢