我已经看到了关于这个具体问题的一些问题。
我最近只从事 Angular2 项目。无论如何,我现在遇到了一个问题。在已弃用的路由器中,我在路由的数据部分添加了我的用户角色,我覆盖了 routerOutlet,以便我可以在激活路由之前检查此值)。
目前,我们可以符合 CanActivate 类/接口行,我们可以调用它。
现在我希望能够向此类 CanActivate 类提供权限(我已将其放入枚举中)。在我只是检查用户是否通过访问我的 SessionService 登录之前,我现在需要检查用户是否具有某些权限。
正如我现在所看到的,我必须实现一个新类,它为每个权限实现 CanActivate。现在这意味着我有 7 个。然而,我们正处于这个项目的早期阶段,无需太多考虑,我可以将其改进为 11 个。
我眼前看到的是一个实现,每个这样的 canActivate 实现只需要大约 3 - 5 行代码。然而,如果我可以提供属性或参数,我会觉得更有帮助。
不考虑我必须实现这样的类的情况:
CanActivateIfUserHasPermissionsViewContentAndViewUsers 甚至更长。
请注意,在我的情况下,权限基本上是多个操作。例如查看所有内容元素,或编辑所有内容等。
所以我没有找到一种方法来使用参数实现我的 CanActivate 。
不过,我确实找到了一个现在对我来说似乎不错的解决方法。
我有一项服务,可以在模块构造中加载我的路线。 (我只是将其添加到模块的构造函数中)。
我的路线现在包含数据 { 权限:[此处的我的值] }。这是在 canActive 挂钩中检查的,因为 canActivate 实现也使用相同的服务。
我的解决方案基于我对另一个问题的讨论:Angular2 RC5 跨模块提供程序/扫描 https://stackoverflow.com/questions/39036489/angular2-rc5-cross-module-provider-scanning
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)