克隆代表:AEM政策

时间:2017-11-08 09:56:54

标签: aem jcr

我目前正在开发一种能够克隆/复制/备份现有rep:policy的解决方案。 '因为当我们做一些工作时,它会被意外删除。我正在尝试应用这种修复,但我没有。它说这是一条无效的道路。

  

javax.jcr.security.AccessControlException:OakAccessControl0006:隔离的策略节点。父类型不是[rep:AccessControllable]

        final Workspace ws = session.getWorkspace();
           ws.copy("/etc/commerce/products/abccompany/TvPackChannelMap/rep:policy","/tmp/nxt/TvPackChannelMap/rep:policy");

我是否还有其他方式可以通过代码获取代码?策略?

3 个答案:

答案 0 :(得分:0)

  

您需要确保您的工作不会触及权限或代表政策,这是您的最佳选择。

异常可能是因为/etc/commerce/products/abccompany/TvPackChannelMap/rep:policy不存在或者您使用session的用户对该节点没有读取权限。

确保路径正确,将其粘贴到CRX / DE以确保其存在。

我尝试使用您的代码将rep:policy从一个节点复制到另一个节点,工作正常。但我会不* 建议以这种方式复制权限。最佳做法是使用Access Control Management API获取所有权限。

答案 1 :(得分:0)

您可以从netcentric检查,安装和使用access control tool。它提供了一个用于导出AC条目的jmx接口,也可能是一些可用于实现自定义解决方案的API。

答案 2 :(得分:0)

其他方法是通过查询语言检索ACL权限。 例如,SELECT * FROM [rep:ACL]或SELECT * FROM [rep:ACE],其中[rep:principalName]不为null应该为您提供结果。

有关详细信息,我建议您检查GitHub上提供的ACS commons ACL Packager Implementation。 参考链接 - https://github.com/Adobe-Consulting-Services/acs-aem-commons/blob/master/bundle/src/main/java/com/adobe/acs/commons/packaging/impl/ACLPackagerServletImpl.java