Angularjs 权限检查

Angularjs 权限检查,angularjs,permissions,Angularjs,Permissions,有一个很长的项目列表,用户对其中一些项目有权限,但有些项目没有权限。如何检查用户是否具有特定项目的权限? 我可以在控制器中加载权限,然后当我在ng repat中通过列表进行迭代时,调用一个方法来检查我是否拥有该项的权限-该项在权限数组中-之前加载过。 我在尝试这种方法时看到的是,由于双向数据竞价,这需要很长时间-即使用户在屏幕上做其他事情时也会执行检查-单击按钮-与控制器交互。实现此功能的最佳方法是什么?我仅在应用程序启动或路由更改时更新我的用户(->权限)。 这样,我的中心方法就不会出现性能问

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

我仅在应用程序启动或路由更改时更新我的用户(->权限)。 这样,我的中心方法就不会出现性能问题

$rootScope.authService.hasPermission(roles)

它只检查结果,所以js在模板中没有任何计算。

只需使用记忆技术即可。权限检查不应该经常更改(我猜在登录表单和注销之后)。因此,您可以执行以下操作:

var memoize = require('lodash.memoize')
var hasPermission = memoize(service.hasPermission)
如果您想清除缓存,只需调用

hasPermission.cache.clear()

我在使用的项目中使用了这种方法,它运行得非常快

通常,如果用户没有查看这些数据的权限,您不应该向客户端发送数据。我建议在服务器端检查它。检查经过身份验证的用户具有哪个角色,并且只发送用户允许看到的数据。好主意,实际上我正在检查前端和后端的位置—数据库中的存储过程。有趣的部分是角度单向数据绑定优化,目前我正在使用双向机制进行优化