【发布时间】:2015-03-05 14:08:18
【问题描述】:
这就是我目前遇到的问题。
我想检查一个用户是否有权限查看一个页面,只有一个功能。
所以我有一个包含键/值的数组,我在其中存储权限。
{"authorities":[{"role":"gebruikersbeheer"},{"role":"kijken"},{"role":"plannen"}]};
存储在service.currentUser,可以使用service.currentUser.authorities调用。
我有一个函数:
hasPermission: function (permission) {
var role = { "role" : permission };
for(perm in service.currentUser.authorities)
{
var test = service.currentUser.authorities[perm];
if(test === role)
{
return (!!(service.currentUser) && true);
}
}
return false;
}
我创建了test 变量来调试它的值。 permission 参数的值是 'gebruikersbeheer'。
现在我想将perm 键的值与role 进行比较并检查它是否为真。
现在我已经在互联网上搜索了这样做,我只找到了对我来说不可行且无法实施的解决方案。
当我开始调试时,我的perm 有一个整数值。为什么不是钥匙的名字? (必须是“角色”)
此外,当我在 role 和 test 变量上使用 Watch 时,它们完全相同,但我仍然无法比较它们并得到 true。
(此时不要介意返回语句。) 我也无法修改数组。 spring security 就是这样返回的。
有没有(更好的)方法来检查authorities 是否包含role?
它可能是重复的,但我找不到适合我具体情况的任何东西。
干杯。
【问题讨论】:
标签: javascript arrays angularjs javascript-objects