【发布时间】:2016-12-25 12:25:18
【问题描述】:
我在这个特定问题上看到了一些问题。
我最近只从事 angular2 项目。无论如何,我现在遇到了一个问题。在弃用的路由器中,我在路由的数据部分添加了我的用户角色,我已经覆盖了 routerOutlet,所以我可以在激活路由之前检查这个值。
目前我们可以符合 CanActivate Class/Interface 行,我们可以调用它。
现在我希望能够为此类 CanActivate 类提供权限(我已将其放入枚举中)。在我只是通过访问我的 SessionService 检查用户是否登录之前,我现在需要检查用户是否具有某些权限。
正如我现在所看到的,我必须实现一个新类,该类为每个权限实现 CanActivate。现在这意味着我有 7 个。然而,我们正处于这个确切项目的早期阶段,没有太多想法我可以将其提高到 11 个。
我眼前看到的是一个实现,每个这样的 canActivate 实现只花费我大约 3 到 5 行。但是,如果我可以提供属性或参数的实现,我会觉得更有帮助。
没想到我必须实现这样的类:
CanActivateIfUserHasPermissionsViewContentAndViewUsers 甚至更长。
请注意,在我的情况下,权限基本上是多个操作。喜欢查看所有内容元素,或编辑所有元素等。
【问题讨论】:
-
好问题 :) 我想这可以从另一边完成。您可以将下一条路线导入
CanActivateGuard并查看用户是否有权限。 -
您将获得正确的路径,而不是路径对象。那么当它是子路由时会发生什么,那仍然匹配吗?您的警卫是否也知道子路线?或者你会扫描你的子模块以获取路由配置。不过还没有检查过。
-
我现在没有要检查的代码。但我想你会得到
ActivatedRouteSnapshotangular.io/docs/ts/latest/api/router/index/… -
我现在在服务中使用该属性,我在模块构造中填充该属性