Apache Shiro - 主题权限和目标津贴

Apache Shiro - Subject Permissions and Target Allowances

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

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

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

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

SecurityUtils.getSubject().isPermitted(document:8:read)只会覆盖user -> document这个方向。

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

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

本质上,我正在寻找 Shiro 方面的辅助功能,这样我就可以做到:

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

我自己提出一个答案:

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;

您如何看待这种方法?