Apache Shiro - 主题许可和目标限额

时间:2017-06-24 01:36:24

标签: authorization shiro

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

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

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

我是否遗漏了Apache Shiro中显而易见的内容,或者这是不可能的?

SecurityUtils.getSubject().isPermitted(document:8:read)仅涵盖用户指示 - >文献。

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

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

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

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

1 个答案:

答案 0 :(得分:0)

我自己提出答案:

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;

您如何看待这种方法?