Я перенаправляю пользователей на разрешенные виды, используя маршруты.Но пользователи, которые не имеют разрешения на просмотр, могут направить его, указав путь [маршрут] в адресной строке.
Я пытался использовать auth-guard, но его использование приводит меня в непрерывный цикл, т.е. / [somePath] запускает canActivate и проверяет разрешения, а после разрешения маршрута он снова попадает в auth-guard из-за canActivate presentна всех маршрутах.
Ниже приведен фрагмент кода [что я пробовал] -
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;
}
Пожалуйста, помогите мне, как я могу ограничить пользователя, чтобы переходить к просмотрам, которые ему не разрешены.