Spring ACL是一个很好的ACL实现吗?

时间:2010-10-20 09:40:27

标签: java spring spring-security acl spring-security-acl

我已经阅读过关于Spring ACL的内容,但它似乎并不是很有能力。例如:

  1. 无法使用权​​限Y列出所有类型为X的对象
  2. 无法自动为新部署创建架构
  3. 你在使用什么ACL?让ACL与域模型分离是否聪明?

3 个答案:

答案 0 :(得分:12)

我们尝试使用Spring ACL模型,发现它很笨重。我们最终编写了我们自己的,更简单(但也不那么通用)的实现,然后编写Spring Security片段(accessDecisionManagers,Voters,Interceptors)来处理我们的架构。希望有所帮助。

答案 1 :(得分:4)

您可能需要查看Apache Shiro

从站点:Apache Shiro是一个功能强大且易于使用的Java安全框架,可执行身份验证,授权,加密和会话管理。借助Shiro易于理解的API,您可以快速轻松地保护任何应用程序 - 从最小的移动应用程序到最大的Web和企业应用程序。

许多人更喜欢Shiro handles permissions

的方式

答案 2 :(得分:0)

如果使用Hibernate,您可以通过将其添加到persistence.xml来自动运行针对数据库的acl架构:

<property name="hibernate.hbm2ddl.import_files" value="/import.sql"/>

<property name="hibernate.hbm2ddl.import_files_sql_extractor" value="org.hibernate.tool.hbm2ddl.MultipleLinesSqlCommandExtractor" />

并将架构添加到/resources/import.sql

您可以使用权限Y列出X类型的所有对象,如下所示:

select 
  *
from acl_entry a 
join acl_object_identity b on a.acl_object_identity = b.id
join acl_class c on b.object_id_class = c.id
where
  class = X
  and mask = Y

但是,由于分页问题,​​Spring Security ACL在行安全性方面存在根本缺陷。如果数据库支持视图或内置工具,则应在数据库中执行行安全性。