@PreAuthorize("hasPermission('DEVICE', {'DELETE','CREATE'})")
是否检查Device对象是否具有DELETE AND CREATE权限或其中任何一个权限?
答案 0 :(得分:2)
正如评论中所说,这取决于您拥有的 PermissionEvaluator 。如果您使用内置ACL系统,则会委派给 DefaultPermissionGrantingStrategy 。 javadoc说:
该方法将按指定的顺序迭代每个
permission
。对于每次迭代,将再次按照它们呈现的顺序考虑所有sid
。然后将对与该AccessControlEntry
组合直接匹配的第一个permission:sid
对象执行搜索。找到第一次完整匹配后,将以该ACE的授予或拒绝标志为准。如果ACE指定授予访问权限,则该方法将返回true
。如果ACE指定拒绝访问,则循环将停止,并且将执行下一个permission
迭代。
(sids =安全身份,用户的主体和权限)
在实践中,这意味着该方法只需要其中一个权限才能返回true。