假设我们有多个用户和文档。
用户可以使用权限访问文档,例如: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)
答案 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;
您如何看待这种方法?