CQ5查询节点,该节点具有特定用户的访问权限

时间:2014-05-17 03:12:36

标签: cq5

在geometrix站点中,如果我需要获取只有用户X有权访问的页面的结果

以下查询会提取所有记录,但我需要仅限制X用户

http://myserver.com:4502/bin/querybuilder.feed?orderby=%40jcr%3acontent%2fjcr%3acreated&orderby.index=true&orderby.sort=desc&path=%2fcontent%2fgeometrixx%2fen&type=cq%3aPage

需要在网址中包含哪些参数

1 个答案:

答案 0 :(得分:1)

ACL mechanism负责授权(决定用户是否有权访问资源)非常复杂。权限从祖先节点继承,有组(并且组可以是另一组的成员),等等。这就是无法编写将列出可用于特定用户的节点的查询的原因

但是,您可以创建代表任何用户工作的资源解析程序,并使用它来查询存储库 - 您将只获得资源解析程序“所有者”可用的资源。例如:

final String user = "my-user";
final String query = "SELECT * FROM [cq:Page] AS s WHERE ISDESCENDANTNODE([/content/geometrixx/en]) ORDER BY [jcr:created]";

Map<String, Object> authInfo = new HashMap<String, Object>();
authInfo.put(ResourceResolverFactory.USER_IMPERSONATION, user);
ResourceResolver resolver = resourceResolverFactory.getAdministrativeResourceResolver(authInfo);
Iterator<Resource> result = resolver.findResources(query, "JCR-SQL2");