0

我想根据用户拥有的权限拒绝访问路由。所以我的 mongoDb 里面有一张桌子,里面有 userRights 和两个简单​​的守卫。一种用于登录用户,一种用于管理员。

所以现在我想给用户访问特定路线的权利。因此我想添加我的canActivate: [checkForRightGuard]哪个被正确解析所以检查但我会怎么做呢?

我考虑过这个解决方案,因为我认为我不必为我必须检查的每一项权利创建一个警卫 - 或者?

所以我虽然关于某事。像这样(当然,这不起作用,但我认为它显示了我需要的东西)

{path: 'admin/expandSoftware', component: ExpandSoftwareComponent, canActivate: [AdminGuard('canExpandSoftware')]},
4

1 回答 1

1

您可以将“数据”属性添加到路由中,如下所示:-

{
    path: 'admin/expandSoftware', 
    component: ExpandSoftwareComponent, 
    canActivate: [AdminGuard],
    data: {authorization: 'canExpandSoftware'}
}

然后在您的路线守卫中,您可以按如下方式访问它:-

canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {
    console.log(route.data["authorization"]);
    return this.canActivate(route, state);
}

但请注意,如果您使用 AOT(提前)编译,则可能不允许将动态(运行时)数据传递给您的路由,因为在使用 AOT 编译时会在编译时分析路由。

于 2018-04-29T08:02:42.920 回答