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

标签 java magnolia

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

目前我正在执行以下操作:

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 的测试,但我似乎只适用于用户 session 。

也许有人知道如何做到这一点,而无需手动获取角色并检查 int 值。

您好, hell 恶魔

最佳答案

正如 Ducaz035 建议的那样,您可以执行 MgnlContext.getAccessManager("website") 并在 AccessManager 上调用 isGranted()
或者,您可以只调用 PermissionUtil.isGranted(node,permission) 并让该方法本身找到正确的访问管理器。

关于java - 如何检查某个用户在根节点上是否具有{写、读}权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38725084/

相关文章:

java - 是否可以将 .class 文件添加到 URLClassLoader 的 urlpath 中

java - FlyWay + Spring Boot 2.x 供应商特定脚本错误 : found more than one migration with version 1. x

freemarker - 有什么用! (感叹号)在 FreeMarker 中吗?

spring - 什么 CMS 用于 Spring MVC Web 应用程序和设备响应式 Web 设计?

java - Magnolia 6.1.1 分析器(小写字母和重音符号)

spring - 找不到对木兰的Gradle依赖关系

Magnolia 无法启动 java.lang.NoClassDefFoundError

java - 是否需要手动释放JNI方法id的资源

java - 读取文件时忽略某些单词

java - final 字段的线程安全