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 内容资源管理器解除对任何页面的锁定。
在我使用 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 内容资源管理器解除对任何页面的锁定。