【问题标题】:hasPermission spring SecurityhasPermission spring 安全性
【发布时间】:2018-01-17 03:40:33
【问题描述】:

这是什么意思?

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

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

【问题讨论】:

  • 这取决于你的 PermissionEvaluator 的实现

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


【解决方案1】:

正如评论中所说,这取决于您拥有哪个 PermissionEvaluator。如果您使用内置 ACL 系统,这将委托给 DefaultPermissionGrantingStrategyjavadoc 说:

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

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

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

【讨论】:

    猜你喜欢
    • 2018-11-23
    • 2014-09-11
    • 2020-07-01
    • 2017-12-21
    • 2012-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多