1
这是什么意思?hasPermission spring安全
@PreAuthorize("hasPermission('DEVICE', {'DELETE','CREATE'})")
是否检查Device对象是否具有DELETE和CREATE两者的权限或其中的任何一个?
这是什么意思?hasPermission spring安全
@PreAuthorize("hasPermission('DEVICE', {'DELETE','CREATE'})")
是否检查Device对象是否具有DELETE和CREATE两者的权限或其中的任何一个?
正如评论中所说,这取决于你拥有哪个PermissionEvaluator。如果您使用内置的ACL系统,则将授予DefaultPermissionGrantingStrategy。 javadoc说:
该方法将按指定的顺序遍历每个
permission
s。对于每次迭代,将会考虑所有sid
,再次按照它们的呈现顺序。然后搜索将直接匹配permission:sid
组合的第一个AccessControlEntry
对象。当找到第一个完整匹配时,该ACE的授予或拒绝标志将占上风。如果ACE指定授予访问权限,该方法将返回true
。如果ACE指定拒绝访问,则循环将停止并且将执行下一个迭代。
(SIDS =安全标识,用户的校长和主管部门)
在实践中,这意味着只有一个权限的需要方法返回true。
这取决于您的PermissionEvaluator – Vitolds