【问题标题】:Angular Routing to Child path based on role基于角色的角度路由到子路径
【发布时间】:2021-08-26 12:55:14
【问题描述】:

成功登录后,我重定向到以下路径 this.router.navigate(['/main/']) 基于从登录收到的角色。是否可以重定向到差异模块。

示例:如果 Role 是 'Admin' 如果我根据角色重定向到 ['/main'] ,它将导航到 admin 模块。使用警卫

项目结构:

应用模块

---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'
          ]
        }
      }
    ]
  }
]```

【问题讨论】:

    标签: angular canactivate angular-guards canactivatechild


    【解决方案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] },
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-12
      • 2012-01-01
      • 1970-01-01
      • 2023-03-30
      • 2015-07-17
      • 1970-01-01
      • 2016-05-04
      • 1970-01-01
      相关资源
      最近更新 更多