我已经在这个特定问题上看到了一些问题。
我最近只从事angular2项目。无论如何,我现在正陷入一个问题。在已弃用的路由器中,我在路由的数据部分中添加了用户角色,我已经覆盖了routerOutlet,因此可以在激活路由之前检查该值)。
目前,我们可以通过可以调用它来符合CanActivate Class / Interface行。
现在,我希望能够为此类CanActivate类提供Permissions(我将其划分为Enum)。但是,在我仅通过访问我的SessionService检查用户是否已登录之前,现在需要检查用户是否具有某些权限。
正如我现在所看到的,我必须实现一个新类,该类为每个许可都实现CanActivate。现在,这意味着我将拥有7。但是,我们正处于这个确切项目的早期阶段,如果没有过多的思考,我可以将其提高到11。
在我面前可以看到的是一个实现,每个canActivate实现仅花费我大约3-5行。但是,我可以通过提供属性或参数的实现获得更多帮助。
不考虑这种情况,我必须实现类似的类:
CanActivateIfUserHasPermissionsViewContentAndViewUsers甚至更长。
请注意,在我的情况下,权限基本上是多个操作。如查看所有内容元素,或编辑所有内容等。
因此,我找不到用参数实现CanActivate的方法。
但是,我确实找到了一种变通方法,它现在对我来说似乎很好。我有一项服务,可以在Module构造上加载我的路由。(我只是将其添加到模块的构造函数中)。
我的路线现在包含数据{权限:[此处是我的值]}。由于canActivate实现也使用相同的服务,因此可以在canActive挂钩中进行检查。
我的解决方案基于我对另一个问题的讨论:Angular2 RC5跨模块提供程序/扫描
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句