如何检查某个用户是不是在根节点上具有 Write, read 权限
Posted
技术标签:
【中文标题】如何检查某个用户是不是在根节点上具有 Write, read 权限【英文标题】:How to get check if a certain user has Write, read permissions on a root node如何检查某个用户是否在根节点上具有 Write, read 权限 【发布时间】:2016-08-02 15:46:27 【问题描述】:我想编写一个方法,该方法必须返回某个用户能够写入/读取的所有根节点。
目前我正在做以下事情:
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 进行了测试,但我似乎只对用户会话有效。
也许有人知道如何在不手动获取角色并检查 int 值的情况下做到这一点。
您好, 地狱魔王
【问题讨论】:
【参考方案1】:按照 Ducaz035 的建议,您可以在 AccessManager 上执行 MgnlContext.getAccessManager("website")
并调用 isGranted()
。
或者,您可以只调用 PermissionUtil.isGranted(node,permission)
并让该方法自行定位正确的访问管理器。
【讨论】:
【参考方案2】:AccessManager#isGranted(node.getPath(), Permission.READ)
看起来像你要找的那个。
希望对你有帮助,
干杯
【讨论】:
以上是关于如何检查某个用户是不是在根节点上具有 Write, read 权限的主要内容,如果未能解决你的问题,请参考以下文章
如何检查Firebase中是不是存在具有多个字段的节点(子)?