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

Aem 具有特定用户访问权限的CQ5查询节点,aem,Aem,在geometrix站点中,如果我需要获取只有用户X可以访问的页面的结果 下面的查询提取所有记录,但我只需要限制X个用户 url中需要包括哪些参数,这些参数负责授权(决定用户是否有权访问资源)是相当复杂的。特权是从祖先节点继承的,存在组(一个组可能是另一个组的成员)等等。这就是为什么无法编写一个查询来列出特定用户可用的节点 但是,您可以创建一个代表任何用户工作的资源解析程序,并使用它来查询存储库-您将只获得资源解析程序“所有者”可用的资源。例如: final String user = "my

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

下面的查询提取所有记录,但我只需要限制X个用户

url中需要包括哪些参数,这些参数负责授权(决定用户是否有权访问资源)是相当复杂的。特权是从祖先节点继承的,存在组(一个组可能是另一个组的成员)等等。这就是为什么无法编写一个查询来列出特定用户可用的节点

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

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");
final String user=“我的用户”;
final String query=“从[cq:Page]中选择*作为s,其中IsDescendatNode([/content/geometricxx/en])按[jcr:created]排序”;
Map authInfo=new HashMap();
authInfo.put(resourcesolverfactory.USER\u模拟,用户);
ResourceResolver resolver=resourceResolverFactory.getAdministrativeResourceResolver(authInfo);
迭代器结果=resolver.findResources(查询,“JCR-SQL2”);