登录成功后,我重定向到以下路径 this.router.navigate(['/main/']) 基于从登录收到的角色。是否可以重定向到差异模块。
示例:如果 Role 是 'Admin' 如果我根据角色重定向到 ['/main'] 它将导航到 admin module 。使用守卫
项目结构:
应用模块
---Login Module
---Main Module
---Admin Module
---User Module
主路由器文件
{
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'
]
}
}
]
}
]```
答案 0 :(得分:1)
通过使用 Guard 你可以做到;
为管理员创建保护
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;
}
}
}
在你的路线中你可以使用;
{ path: 'admin/admin', component: AdminComponent, canActivate: [AdminGuard] },