簡體   English   中英

如何獲取特定用戶是否在根節點上具有{寫入,讀取}權限

[英]How to get check if a certain user has {Write, read} permissions on a root node

我想編寫一種方法,該方法必須返回某個用戶能夠寫/讀的所有根節點。

目前,我正在執行以下操作:

public List<String> getAllowedRootPaths(String username) throws RepositoryException {

    SecuritySupport securitySupport = Components.getComponent(SecuritySupport.class);
    UserManager userManager = securitySupport.getUserManager();
    myUser = userManager.getUser(username);
    Session session = MgnlContext.getJCRSession("website");
    List<String> results = new ArrayList<String>();

        if (getRoles().contains("rootPublisher")) {
                //check user access and add to array
        }
        return results;
    }

    public Collection<String> getRoles() {
       return magnoliaUser.getAllRoles();
    }

我以前的方法是使用

HierarchyManager hm = MgnlContext.getHierarchyManager("website");

並測試

hm.isGranted(node.getPath(), Permission.READ)

但由於那是不推薦使用的,因此我目前正在尋找另一種解決方案。 我知道Session對AccessRights進行了測試,但是我似乎只對usersession有效。

也許有人知道如何做到這一點,而無需手動獲取Roles並檢查int值。

問候,地獄惡魔

正如Ducaz035所建議的,您可以執行MgnlContext.getAccessManager("website")並在AccessManager上調用isGranted()
或者,您可以只調用PermissionUtil.isGranted(node,permission)並讓該方法定位正確的訪問管理器本身。

AccessManager#isGranted(node.getPath(), Permission.READ)

好像您要尋找的那個。

希望能有所幫助,

干杯

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM