2017-06-24 51 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; 

你認爲怎麼樣這種方法?