2017-06-24 35 views
0

比方说,我们有多个用户和文件。阿帕奇四郎 - 主题权限和目标津贴

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

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

我在Apache Shiro中丢失了一些明显的东西,或者这是不可能的吗?

SecurityUtils.getSubject().isPermitted(document:8:read)将仅覆盖用户方向 - >的文件。

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

我可以得到所有文档的权限列表。我将如何检查这个清单中的某个许可?

基本上我正在寻找在四郎的侧辅助功能,这样我可以做的:

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

回答

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; 

你认为怎么样这种方法?