hasPermission spring安全

时间:2017-08-09 10:00:19

标签: spring spring-mvc spring-boot spring-security spring-data

这意味着什么?

@PreAuthorize("hasPermission('DEVICE', {'DELETE','CREATE'})")

是否检查Device对象是否具有DELETE AND CREATE权限或其中任何一个权限?

1 个答案:

答案 0 :(得分:2)

正如评论中所说,这取决于您拥有的 PermissionEvaluator 。如果您使用内置ACL系统,则会委派给 DefaultPermissionGrantingStrategy javadoc说:

  

该方法将按指定的顺序迭代每个permission。对于每次迭代,将再次按照它们呈现的顺序考虑所有sid。然后将对与该AccessControlEntry组合直接匹配的第一个permission:sid对象执行搜索。找到第一次完整匹配后,将以该ACE的授予或拒绝标志为准。如果ACE指定授予访问权限,则该方法将返回true。如果ACE指定拒绝访问,则循环将停止,并且将执行下一个permission迭代。

(sids =安全身份,用户的主体和权限)

在实践中,这意味着该方法只需要其中一个权限才能返回true。