Запуск в петлю из-за аутентификации - PullRequest
0 голосов
/ 24 июня 2019

Я перенаправляю пользователей на разрешенные виды, используя маршруты.Но пользователи, которые не имеют разрешения на просмотр, могут направить его, указав путь [маршрут] в адресной строке.

Я пытался использовать 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;

}

Пожалуйста, помогите мне, как я могу ограничить пользователя, чтобы переходить к просмотрам, которые ему не разрешены.

...