Jackrabbit 初始内容加载-如何设置访问权限?
我有一个由Maven sling初始内容原型生成的包,这意味着在安装包时将内容导入到存储库中。我希望匿名用户能够将子节点添加到特定节点,并且我希望在bundle安装时自动设置这些权限。我尝试了以下操作(存储为内容目录中的JSON文件),但它生成了一个错误: “无法加载捆绑包com.example.acltest的初始内容:无法执行操作。节点受保护。”Jackrabbit 初始内容加载-如何设置访问权限?,jackrabbit,sling,Jackrabbit,Sling,我有一个由Maven sling初始内容原型生成的包,这意味着在安装包时将内容导入到存储库中。我希望匿名用户能够将子节点添加到特定节点,并且我希望在bundle安装时自动设置这些权限。我尝试了以下操作(存储为内容目录中的JSON文件),但它生成了一个错误: “无法加载捆绑包com.example.acltest的初始内容:无法执行操作。节点受保护。” 怎么了?老实说,我甚至不知道“节点受保护”应该是什么意思。我认为Sling的内容加载器模块无法处理这些节点,它需要对它们进行特殊处理,以将它们转换
怎么了?老实说,我甚至不知道“节点受保护”应该是什么意思。我认为Sling的内容加载器模块无法处理这些节点,它需要对它们进行特殊处理,以将它们转换为设置ACL的相应JCR调用 Jackrabbit确实使用假
rep:ACL
nodetypes实现了这一点,这些nodetypes在加载此类内容文件IIUC时会被解释。如果在初始内容文件中确实需要这些ACL,则可以选择使用filevault
Sling中的替代方法是使用捆绑包的Activator或该捆绑包提供的OSGi组件,根据需要设置ACL(如果允许用户更改ACL,则仅设置一次)。我认为初始内容将在激活Activator或OSGi组件之前安装,但您需要验证。我检查了行为,在测试中,内容总是在激活OSGi组件之前加载。所以就像你建议的那样,我现在在组件激活上设置ACL,它可以工作。非常感谢你的帮助,伯特兰!
{
"jcr:primaryType": "nt:unstructured",
"jcr:mixinTypes": ["rep:AccessControllable"],
"rep:policy": {
"jcr:primaryType": "rep:ACL",
"jcr:mixinTypes": ["sling:HierarchyNode"],
"allow": {
"jcr:primaryType": "rep:GrantACE",
"jcr:mixinTypes": ["sling:HierarchyNode"],
"rep:principalName": "anonymous",
"rep:privileges": ["jcr:addChildNodes"]
}
}
}