Java 如何检查某个用户在根节点上是否具有{写,读}权限

Java 如何检查某个用户在根节点上是否具有{写,读}权限,java,magnolia,Java,Magnolia,我想写一个方法,它必须返回某个用户能够写入/读取的所有根节点 目前我正在做以下工作: public List<String> getAllowedRootPaths(String username) throws RepositoryException { SecuritySupport securitySupport = Components.getComponent(SecuritySupport.class); UserManager userManager

我想写一个方法,它必须返回某个用户能够写入/读取的所有根节点

目前我正在做以下工作:

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();
    }
和测试

hm.isGranted(node.getPath(), Permission.READ)
但由于这是不赞成的,我目前正在寻找另一种解决方案。我知道Session有一个AccessRights测试,但我似乎只对usersession有效

也许有人知道如何在不手动获取角色和检查int值的情况下做到这一点

您好, Hellfiend已被授予访问管理器(node.getPath(),Permission.READ)

好像就是你要找的那个

希望有帮助

欢呼声

AccessManager#被授予(node.getPath(),Permission.READ)

好像你要找的那个

希望有帮助


干杯

正如Ducaz035建议的那样,您可以执行
MgnlContext.getAccessManager(“网站”)
并在AccessManager上调用
isgrated()


或者,您可以只调用
PermissionUtil.isgrated(节点,权限)
,让该方法定位正确的访问管理器本身。

正如Ducaz035建议的那样,您可以执行
MgnlContext.getAccessManager(“网站”)
并在AccessManager上调用
isgrated()

或者,您可以只调用
PermissionUtil.isgrated(节点,权限)
,让该方法找到合适的访问管理器本身

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