2014-01-27 1 views
2

Maven sling-initial-content archetype에 의해 생성 된 번들이 있습니다. 즉, 번들이 설치 될 때 컨텐츠가 저장소로 임포트됨을 의미합니다. 익명 사용자가 자식 노드를 특정 노드에 추가 할 수있게하고 번들 설치시 이러한 사용 권한을 자동으로 설정하려고합니다. 나는 (콘텐츠 디렉토리에서 JSON 파일로 저장 한) 오류를 생성했지만 오류를 생성합니다.초기 콘텐츠로드 슬링 - 액세스 권한을 설정하는 방법?

"번들 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"] 
     } 
    } 
} 

무엇이 잘못 되었나요? 솔직히, 나는 "노드가 보호되고있다"는 것을 알지조차 모릅니다.

답변

2

슬링의 컨텐트 로더 모듈이 이러한 노드를 처리 할 수 ​​없다고 생각합니다. ACL을 설정하는 해당 JCR 호출로 변환하려면 특수 처리가 필요합니다.

Jackrabbit의 filevault module은 이러한 콘텐츠 파일 인 IIUC를로드 할 때 해석되는 가짜 rep:ACL 노드 유형을 사용하여 구현합니다. 초기 컨텐트 파일에 ACL이 실제로 필요한 경우 filevault를 사용하는 것이 좋습니다.

슬링의 대안은 번들의 Activator 또는 해당 번들에서 제공하는 OSGi 구성 요소를 사용하여 원하는대로 ACL을 설정하는 것입니다 (사용자가 변경할 수있는 경우 한 번만). I Activator 또는 OSGi 구성 요소가 활성화되기 전에 초기 내용이 설치되지만 그 내용을 확인해야합니다.

+0

동작을 확인한 결과 OSGi 구성 요소가 활성화되기 전에 콘텐츠가 항상로드되었습니다. 그래서 당신이 제안한 것처럼 지금은 구성 요소 활성화에 대한 ACL을 설정하고 작동합니다. 도와 줘서 고마워, Bertrand! – Markus

관련 문제