AEM 6.1 - 解锁页面问题有resolverFactory.getServiceResourceResolver()方法

时间:2016-09-30 20:29:35

标签: aem jcr

在我在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

我在想是否可以在其他地方分配一个解锁给这个系统用户的权限,因为用当前权限来做这件事似乎是不可能的。

感谢您的任何想法。

2 个答案:

答案 0 :(得分:0)

这是不可能的。只有管​​理员用户和锁拥有者才能删除锁定。

答案 1 :(得分:0)

锁定所有者可以删除锁定。即使是管理员组的成员也无法解锁页面。但是,管理员用户可以使用CRX Content Explorer删除任何页面的锁定。