基于角色的角度路由到子路径

时间:2021-06-09 13:52:00

标签: angular canactivate angular-guards canactivatechild

登录成功后,我重定向到以下路径 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'
          ]
        }
      }
    ]
  }
]```

1 个答案:

答案 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] },