canActivate()应该路由到Angular中的另一个(error / unAuthorized)页面

时间:2017-05-19 11:35:12

标签: angular angular2-routing

我正在尝试实现路由应该有警卫,(具体访问或角色基础)

这是我的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);
       }
   }

但我发现这种解决方案不是最佳方式。

打开任何替代解决方案,提前致谢

0 个答案:

没有答案