首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Spring Security ACL实现树节点?

如何使用Spring Security ACL实现树节点?
EN

Stack Overflow用户
提问于 2016-04-20 21:30:15
回答 1查看 239关注 0票数 1

我正在使用spring 4.0.6和Hibernate 4.2.21开发一个应用程序。我有一个如下的实体:

代码语言:javascript
复制
public class A {
   @OneToMany(mappedBy="parent", fetch = FetchType.LAZY)
   private Set<A> children = new HashSet<A>(0);

   @ManyToOne(fetch = FetchType.EAGER)
   private A parent;

   /*
    *
    * Getters And Setters
    */

}

换句话说,A实体是一棵树。现在我想要保护树的所有节点。以下面的树为例:

代码语言:javascript
复制
Node-1   
   Node-1.1
      Node-1.1.1
      Node-1.1.2
   Node-1.2
   Node-1.3
Node-2
Node-3
   Node-3.1
   Node-3.2
   Node-3.3

I保护节点如下:

代码语言:javascript
复制
@PostFilter("hasPermission(filterObject, 'read')")
public List<A> getAll() {}

这段代码保护第一级(Node-1Node-2Node-3)的节点。现在,我们希望在Node-1Node-1.1Node-1-2节点中获得用户的read访问权限。我们如何实现它?

EN

回答 1

Stack Overflow用户

发布于 2016-04-20 21:49:20

您可以使用ACL继承。您必须为每个孩子添加一个ObjectIdentity。请注意,acl_object_identity表具有parent_objectentries_inheriting属性。

如果你正在使用大型集合的应用程序级过滤,你应该考虑创建连接ACL实体的规范,这样你就可以利用数据库过滤来提高性能。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36745429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档