Угловая маршрутизация к дочернему пути на основе роли
После успешного входа в систему я перенаправляюсь по следующему пути this.router.navigate(['/main/']) в зависимости от роли, полученной при входе в систему. Можно ли перенаправить на модули diff.
Пример: если роль - «Администратор», если я перенаправляю на ['/main'] в зависимости от роли, он перейдет в модуль администратора. Использование охранников
Структура проекта:
Модуль приложения
---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'
]
}
}
]
}
]```
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] },