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

AEM 6.1 - Unlocking pages issue having resolverFactory.getServiceResourceResolver() approach

在我使用 AEM 6.1 的项目中,我们使用 "new" 方式通过行 resolverFactory.getServiceResourceResolver()[=37 获取有效的 ResourceResolver 对象=].如您所知,必须在环境中创建具有正确权限的系统用户,才能在 JCR 中执行某些任务。我们已经创建了一个具有管理员权限的系统用户。

附加权限:useradmin page

此用户作为 默认用户 分配给 Apache Sling 服务用户映射器服务 配置,因此我们不必通过在代码中的任何时间,带有子服务名称的 Map 对象。我正在测试的页面路径是/content/test/test-1/test-folder/test-unlock-page/。附上相关的CODE。当执行 page.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 的文档,根据我的理解,当您为此用户指定 修改权限 时,用户可以 锁定 (锁定)但是这段没有说明任何关于 unlocking:

At the JCR level, users can modify a resource by modifying its properties, locking, versioning, nt-modifications, and they have complete write permission on nodes defining a jcr:content child node, for example cq:Page, nt:file, cq:Asset

我在想是否可以在其他地方为该系统用户分配解锁权限,因为以当前权限似乎不可能做到这一点。

感谢您的任何想法。

这是不可能的。只有 admin 用户和锁拥有者可以移除锁。

只有锁的拥有者才能解除锁。即使是管理员组的成员也无法解锁页面。但是,管理员用户可以使用 CRX 内容资源管理器解除对任何页面的锁定。