Angular JS权限检查

时间:2015-06-26 16:05:46

标签: angularjs permissions

有一长串项目,其中一些用户拥有其中一些权限的项目没有。如何检查用户是否拥有特定项目的权限? 我可以在控制器中加载权限,然后当我通过ng-repat中的列表进行迭代时,调用一个方法来检查该项是否有权限 - 该项是在权限数组中 - 之前加载的。 我在尝试这种方法时看到的是,由于双向数据绑定需要很长时间 - 即使用户在屏幕上执行其他操作 - 单击按钮 - 与控制器交互,也会执行检查。实现这一目标的最佳方法是什么?

2 个答案:

答案 0 :(得分:0)

我仅在应用启动或路由更改时更新我的​​用户( - >权限)。 有了这个,我的核心方法

没有出现任何性能问题
$rootScope.authService.hasPermission(roles)

仅检查结果,因此js无需在模板中计算。

答案 1 :(得分:0)

只需使用memoization技术。许可检查不应经常更改(我想在登录表单和注销后)。所以,你可以这样做:

var memoize = require('lodash.memoize')
var hasPermission = memoize(service.hasPermission)

如果要清除缓存只需调用

hasPermission.cache.clear()

我在使用CASL的项目中使用了这种方法,并且工作得非常快