Я новичок в Angular
, и я использую Angular-5
.
В моем приложении у меня есть 2 экрана / компоненты, которые называются « Admin-Dashboard » и « HR-Dashboard ». Мой маршрут по умолчанию /Admin-Dashboard
, посмотрите следующие маршруты:
const routes: Routes = [
{
path: 'Admin-Dashboard',
component: AdminDashboardComponent,
canActivate: [AuthGuard]
},
{
path: HR-Dashboard',
component:HRDashboardComponent,
canActivate: [AuthGuard]
}
// otherwise redirect to home
{ path: '**', redirectTo: '/Admin-Dashboard', canActivate: [AuthGuard] }];
Если пользователь не вошел в систему, my AuthGaurd
перенаправляет пользователя на экран входа в систему, то пользователь входит в систему со своими действительными учетными данными. Когда пользователь входит в систему, пользователь перенаправляется на /
, то есть маршрут по умолчанию, который затем автоматически перенаправляется на /Admin-Dashboard
.
Моя проблема в том, что я должен перенаправить пользователя, вошедшего в систему, в соответствии с его ролью (HR или ADMIN). Если user.role=="ADMIN"
, перейдите в Панель управления администратора, Если user.role == "HR", перейдите в Панель управления персоналом.
В настоящее время мой подход заключается в том, что пользователь сначала перенаправляется на /Admin-Dashboard
из-за настроек маршрута по умолчанию, затем в его конструкторе я проверяю роль пользователя и, если это HR
, я перенаправляю пользователя на «HR-панель», используя router.navigate()
. Это работает нормально, но в адресной строке сначала отображается / Admin-Dashboard, а затем перенаправляется на HR-Dashboard.
if(this.authService.currentUser.role=='HR'){
this.router.navigate(['HR-Dashboard']);
}
Я ищу какой-то лучший подход для достижения той же функциональности.
Есть ли способ, с помощью которого я могу проверить в самой маршрутизации, является ли пользователь admin или hr, и перенаправить соответственно?
Обновление: Извините, я забыл упомянуть большую вещь, я использую Gluu
(сторонний сервер аутентификации) в качестве сервера аутентификации, который перенаправляет пользователя на URL моих приложений (https://ip/port например, 'https://192.168.55.10:4200'), если пользователь успешно вошел в систему. У меня нет элемента управления, чтобы изменить навигацию с gluu, он будет перенаправлять только на мой URL-адрес по умолчанию вместе с пользовательскими данными. Даже экран входа в систему не является частью моего приложение, оно размещено на cloude, и я перенаправляю на страницу входа, используя OIDC_Settings
и AuthGaurd
в моем файле конфигурации среды.
Заранее спасибо.