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

时间:2014-01-27 12:03:37

标签: jackrabbit sling

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

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

{
    "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"]
        }
    }
}

它出了什么问题?老实说,我甚至不知道“节点受保护”是什么意思。

1 个答案:

答案 0 :(得分:2)

我认为Sling的内容加载器模块无法处理这些节点,需要对它们进行特殊处理,将它们转换为相应的设置ACL的JCR调用。

Jackrabbit的filevault module使用伪rep:ACL节点类型来实现这一点,这些节点类型在加载此类内容文件时被解释,即IIUC。如果您确实需要初始内容文件中的ACL,则可以选择使用filevault。

Sling中的替代方法是使用bundle的Activator或该bundle提供的OSGi组件来根据需要设置ACL(只允许一次,如果允许用户更改它们)。我认为在激活Activator或OSGi组件之前将安装初始内容,但您需要验证它。