Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jackrabbit 初始内容加载-如何设置访问权限?_Jackrabbit_Sling - Fatal编程技术网

Jackrabbit 初始内容加载-如何设置访问权限?

Jackrabbit 初始内容加载-如何设置访问权限?,jackrabbit,sling,Jackrabbit,Sling,我有一个由Maven sling初始内容原型生成的包,这意味着在安装包时将内容导入到存储库中。我希望匿名用户能够将子节点添加到特定节点,并且我希望在bundle安装时自动设置这些权限。我尝试了以下操作(存储为内容目录中的JSON文件),但它生成了一个错误: “无法加载捆绑包com.example.acltest的初始内容:无法执行操作。节点受保护。” 怎么了?老实说,我甚至不知道“节点受保护”应该是什么意思。我认为Sling的内容加载器模块无法处理这些节点,它需要对它们进行特殊处理,以将它们转换

我有一个由Maven sling初始内容原型生成的包,这意味着在安装包时将内容导入到存储库中。我希望匿名用户能够将子节点添加到特定节点,并且我希望在bundle安装时自动设置这些权限。我尝试了以下操作(存储为内容目录中的JSON文件),但它生成了一个错误:

“无法加载捆绑包com.example.acltest的初始内容:无法执行操作。节点受保护。”


怎么了?老实说,我甚至不知道“节点受保护”应该是什么意思。

我认为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"]
        }
    }
}