在我在AEM 6.1中工作的项目中,我们使用“新”方法通过 resolverFactory.getServiceResourceResolver()行获取有效的ResourceResolver对象。如您所知,有必要在环境中使用正确的权限创建系统用户,以在JCR中执行某些任务。我们已经创建了一个具有管理员权限的系统用户。
附加权限:useradmin page
此用户被分配到 Apache Sling Service用户映射器服务配置为默认用户,因此我们不必随时在代码中传递Map对象子服务名称。我正在测试的页面路径是 / content / test / test-1 / test-folder / test-unlock-page / 。附上相关的CODE。当执行line.unlock()行时,抛出WCMException
@Override
public void unlock(String userId, String pagePath) throws LoginException, WCMException {
ResourceResolver resourceResolver =resourceResolverFactory.getServiceResourceResolver(null);
PageManager pageMgr = resourceResolver.adaptTo(PageManager.class);
Session session = resourceResolver.adaptTo(Session.class);
Page page = pageMgr.getPage(pagePath);
if(!page.isLocked()) {
log.info("Page is NOT locked, unlock operation not mandatory: " + pagePath);
} else {
log.info("Unlocking page on behalf of: " + userId);
page.unlock();
}
例外原因是:
javax.jcr.lock.LockException: Not an owner of the lock /content/test/test-1/test-folder/test-unlock-page/jcr:content
我阅读了此link的文档,根据我的理解,当您为此用户指定修改权限时,用户可以锁定(锁定),但这样段落没有说明解锁:
在JCR级别,用户可以通过修改其属性,锁定,版本控制,修改nt来修改资源,并且他们对定义jcr:content子节点的节点具有完全写入权限,示例cq:Page,nt:file,cq:Asset
我在想是否可以在其他地方分配一个解锁给这个系统用户的权限,因为用当前权限来做这件事似乎是不可能的。
感谢您的任何想法。
答案 0 :(得分:0)
这是不可能的。只有管理员用户和锁拥有者才能删除锁定。
答案 1 :(得分:0)
锁定所有者可以删除锁定。即使是管理员组的成员也无法解锁页面。但是,管理员用户可以使用CRX Content Explorer删除任何页面的锁定。