0

ここまたはJackrabbitのドキュメントで答えが見つからないという問題があります。誰かがそれを手伝ってくれることを願っています。

私は次のことをしています:

  • admin create "someuser"
  • 管理者は上記のノードを作成します:/ templates / templateall [jcr:uuid:a9b629a4-d1dd-4ba3-a602-629e4ca1a7fd jcr:mixinTypes:mix:referenceable、rep:AccessControllable、label:templateall jcr:primaryType:nt:unstructured / templates / templateall / rep:policy [jcr:primaryType:rep:ACL / templates / templateall / rep:policy / allow [rep:privileges:jcr:all、rep:principalName:someuser jcr:primaryType:rep:GrantACE

  • someuserは、save()で次の例外を除いて、/ templates/templateallノードを削除しようとします。

javax.jcr.AccessDeniedException:/ templates / templateall:org.apache.jackrabbit.core.ItemSaveOperation.perform(ItemSaveOperation。のorg.apache.jackrabbit.core.ItemSaveOperation.validateTransientItems(ItemSaveOperation.java:704)のアイテムを削除することは許可されていません。 java:216)at org.apache.jackrabbit.core.session.SessionState.perform(SessionState.java:216)at org.apache.jackrabbit.core.ItemImpl.perform(ItemImpl.java:91)at org.apache.jackrabbit .core.ItemImpl.save(ItemImpl.java:329)at org.apache.jackrabbit.core.session.SessionSaveOperation.perform(SessionSaveOperation.java:64)at org.apache.jackrabbit.core.session.SessionState.perform(SessionState .java:216)org.apache.jackrabbit.core.SessionImpl.perform(SessionImpl.java:361)at org.apache.jackrabbit.core.SessionImpl.save(SessionImpl.java:812)

  • その後、adminユーザーで/ templates / templateallを削除しようとすると、削除は正常に完了します。
  • 次に、同じことを試みますが、ユーザー "someuser" jcr:allに/ templates /templateallではなくノード/templatesへのアクセスを許可すると、"someuser"は/templates/templateallを正常に削除できます。

したがって、最初の構造例での私の結論は次のとおりです。「someuser」はノード/ templates / templateallの子を削除できますが、ノード自体は削除できません。これを実行するには、jcr:removeChildNodes acess no/templatesを提供する必要があります。

私の結論は正しいですか?

ありがとう!!

4

1 に答える 1

0

私はイエスと思う。Jackrabbit のセキュリティに関するすべての詳細はわかりませんが、

各ノードには子ノード ID のリストが含まれているため、Jackrabbit でノードを削除すると、親ノードが変更されます。

于 2012-05-03T04:20:48.247 に答える