由于身份验证防护而陷入循环

时间:2019-06-24 06:22:27

标签: angular routing auth-guard

我正在使用路由将用户重定向到允许的视图。但是没有视图权限的用户可以通过在地址栏中提供path [route]来路由到该视图。

我尝试使用auth-guard,但是使用它会使我进入一个连续循环,即/ [somePath]触发canActivate并检查权限,并且在解决路由之后,由于所有中存在canActivate,它再次进入auth-guard路线。

下面是一段代码[我已经尝试过了]-

app.routing.ts

{
    path: '',
    component: A,
    canActivate: [AuthGuard]
},
{
    path: 'B',
    component: B,
    canActivate: [AuthGuard]
},
{
    path: 'C',
    component: C,
    canActivate: [AuthGuard]
},
{
    path: 'D',
    component: D,
    canActivate: [AuthGuard]
},
{
    path: 'E',
    component: E,
    canActivate: [AuthGuard]
}

auth-guard.ts

canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {

if (this.ck.getUser()) {
    // check if route is restricted by role
    if(this.ck.hasRealmRole('A')){
      this.router.navigate(['/A']);
      return false;
    }
    if(this.ck.hasRealmRole('B')){
      this.router.navigate(['/B']);
      return false;
    }
    if(this.ck.hasRealmRole('C')){
      this.router.navigate(['/C']);
      return false;
    }

    if(this.ck.hasRealmRole('D')){
      this.router.navigate(['/D']);
      return false;
    }

    return true;
}


return false;

}

请帮助我如何限制用户浏览到不允许的视图。

0 个答案:

没有答案