我目前正在开发一种能够克隆/复制/备份现有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");
我是否还有其他方式可以通过代码获取代码?策略?
答案 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