【问题标题】:Apache Shiro - Subject Permissions and Target AllowancesApache Shiro - 主题权限和目标限额
【发布时间】:2017-11-27 15:40:51
【问题描述】:

假设我们有多个用户和文档。

用户可以使用权限访问文档,例如:document:id:action(例如 document:1:edit, document:2:read)。

现在我还希望可以选择从我的文档端授予多个用户访问权限,例如(user:*:read) -> 所有用户都应该有读取权限。

我是否在 Apache Shiro 中遗漏了一些明显的东西,或者这不可能?

SecurityUtils.getSubject().isPermitted(document:8:read) 只会覆盖方向用户 -> 文档。

我如何实现类似的东西 SecurityUtils.getTarget().allows(user:7:write) ?

我可以将所有文档权限作为一个列表。我将如何检查此列表以获得特定权限?

基本上我正在寻找 Shiro 方面的辅助功能,以便我可以做到:

allPermissions = ['user:6:write', 'user:*:read'] permissionToCheck = 'user:95:read' isPermitted(allPermissions, permissionToCheck)

【问题讨论】:

    标签: authorization shiro


    【解决方案1】:

    我自己提出一个答案:

    List<String> notebookPermissions = ...;
    String permissionToCheck = "user:read:" + getUser().getId();
    Permission resolvedPermissionToCheck = resolver.resolvePermission("user:read:" + getUser().getId())
    List<Permission> permissions = notebookPermissions.stream().map(p -> 
         resolver.resolvePermission(p)).collect(Collectors.toList());
    for (Permission perm : permissions) {
      if (perm.implies(resolvedPermissionToCheck)) {
         return true;
      }
    }
    return false;
    

    您如何看待这种方法?

    【讨论】:

      猜你喜欢
      • 2016-09-28
      • 2011-07-12
      • 2013-04-26
      • 2017-06-14
      • 2021-07-30
      • 2013-02-26
      • 2013-06-15
      • 2015-01-24
      • 2019-11-23
      相关资源
      最近更新 更多