我正在使用路由将用户重定向到允许的视图。但是没有视图权限的用户可以通过在地址栏中提供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;
}
请帮助我如何限制用户浏览到不允许的视图。