[英]Angular Routing to Child path based on role
After successful login, I redirect to following path this.router.navigate(['/main/']) Based on role received from login.成功登录后,我重定向到以下路径this.router.navigate(['/main/'])基于从登录收到的角色。 Is it possible to redirect to diff modules.
是否可以重定向到差异模块。
Example : If Role is 'Admin' if I redirect to ['/main'] based on role it will navigate to admin module.示例:如果我根据角色重定向到 ['/main'],则角色为“管理员”,它将导航到管理模块。 Using guards
使用警卫
Project structure:项目结构:
App module应用模块
---Login Module
---Main Module
---Admin Module
---User Module
Main Router File主路由器文件
{
path: 'main',
component: MainComponent,
children: [
{
path: 'admin',
loadChildren: ()=>import('./admin/admin.module').then(({
AdminModule
})=>AdminModule),
canActivate: [
RoleGuard
],
data: {
roles: [
'Admin'
]
}
},
{
path: 'user',
loadChildren: ()=>import('./user/user.module').then(({
UserModule
})=>UserModule),
canActivate: [
RoleGuard
],
data: {
roles: [
'User'
]
}
}
]
}
]```
By use Guard you can do it;通过使用 Guard 你可以做到;
Creat a Guard for Admin为管理员创建警卫
export class AdminGuard implements CanActivate {
constructor(private router: Router) { }
canActivate() {
const AdminTokenLogin = Math.random();
if (AdminTokenLogin > 0.4) {
this.router.navigate(['/admin/admin']);
return true;
} else {
this.router.navigate(['/main']);
return false;
}
}
}
In your routes you can use;在您的路线中,您可以使用;
{ path: 'admin/admin', component: AdminComponent, canActivate: [AdminGuard] },
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.