0

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

示例:如果角色是“管理员”,如果我根据角色重定向到 ['/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'
          ]
        }
      }
    ]
  }
]```
4

1 回答 1

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] },
于 2021-06-09T13:59:42.907 回答