【问题标题】:Jackrabbit AccessControllJackrabbit 访问控制
【发布时间】:2012-05-02 22:34:23
【问题描述】:

我有一个在这里或 Jackrabbit 文档中找不到答案的问题,希望大家能提供帮助。

我正在做以下事情:

  • 管理员创建“someuser”
  • admin 创建以上节点: /模板/模板全部[ jcr:uuid: a9b629a4-d1dd-4ba3-a602-629e4ca1a7fd jcr:mixinTypes: mix:referenceable, rep:AccessControllable, 标签: 模板 jcr:primaryType:nt:非结构化 /模板/模板全部/代表:政策[ jcr:primaryType: 代表:ACL /模板/模板全部/代表:政策/允许[ 代表:特权:jcr:全部, 代表:principalName:someuser jcr:primaryType: rep:GrantACE

  • someuser 尝试删除 /templates/templateall 节点,但 save() 出现以下异常

javax.jcr.AccessDeniedException: /templates/templateall: not allowed to remove item 在 org.apache.jackrabbit.core.ItemSaveOperation.validateTransientItems(ItemSaveOperation.java:704) 在 org.apache.jackrabbit.core.ItemSaveOperation.perform(ItemSaveOperation.java:216) 在 org.apache.jackrabbit.core.session.SessionState.perform(SessionState.java:216) 在 org.apache.jackrabbit.core.ItemImpl.perform(ItemImpl.java:91) 在 org.apache.jackrabbit.core.ItemImpl.save(ItemImpl.java:329) 在 org.apache.jackrabbit.core.session.SessionSaveOperation.perform(SessionSaveOperation.java:64) 在 org.apache.jackrabbit.core.session.SessionState.perform(SessionState.java:216) 在 org.apache.jackrabbit.core.SessionImpl.perform(SessionImpl.java:361) 在 org.apache.jackrabbit.core.SessionImpl.save(SessionImpl.java:812)

  • 之后,我尝试使用管理员用户删除/templates/templateall,删除成功。
  • 然后我尝试做同样的事情,但我让用户“someuser”jcr:all 访问节点 /templates 而不是 /templates/templateall,然后“someuser”能够成功删除 /templates/templateall

所以我对第一个结构示例的结论是:“someuser”可以删除节点 /templates/templateall 的任何子节点,但不能删除节点本身,需要提供 jcr:removeChildNodes 访问 no /templates 才能做到这一点。

我的结论正确吗?

谢谢!!

【问题讨论】:

    标签: jackrabbit


    【解决方案1】:

    我认为是的。我不知道 Jackrabbit 安全性的所有细节,但是:

    在 Jackrabbit 中删除一个节点会修改父节点,因为每个节点都包含子节点 ID 列表。

    【讨论】:

      猜你喜欢
      • 2012-06-08
      • 2012-10-09
      • 1970-01-01
      • 1970-01-01
      • 2011-06-17
      • 1970-01-01
      • 2017-03-11
      • 2018-06-04
      • 2011-03-16
      相关资源
      最近更新 更多