我是新手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] }];
如果用户未登录我的AuthGaurd重定向用户到登录屏幕,则用户使用他的有效凭据登录。当用户登录时,用户用户被重定向到/即默认路由,然后自动重定向到/Admin-Dashboard。
我的问题是我必须根据他的角色(HR 或 ADMIN)重定向到登录用户。如果user.role=="ADMIN"去 Admin-Dashboard,如果 user.role=="HR" 去 HR-Dashboard。
目前我的方法是,/Admin-Dashboard由于默认路由设置,用户首先重定向到,然后在其构造函数中我检查用户角色,如果是,HR我使用重定向用户到“HR-Dashboard” router.navigate()。这工作正常,但首先在地址栏中 /Admin-Dashboard呈现,然后重定向到 HR-Dashboard。
if(this.authService.currentUser.role=='HR'){
this.router.navigate(['HR-Dashboard']);
}
我正在寻找一些更好的方法来实现相同的功能。有什么方法可以让我检查路由本身是管理员还是 hr 并相应地重定向?
更新:对不起,我忘了提大事,我正在使用Gluu(第三方身份验证服务器)作为身份验证服务器,它将用户重定向到我的应用程序 url(https://ip/port例如' https://192.168.55.10:4200 ') 如果用户成功登录。我没有控制从 gluu 更改导航,它只会重定向到我的默认 URL 以及用户数据。即使是登录屏幕也不是我的应用程序的一部分,它托管在 cloude 上,我使用环境配置文件重定向到登录OIDC_Settings页面AuthGaurd。
先感谢您。