我已经阅读过关于Spring ACL的内容,但它似乎并不是很有能力。例如:
你在使用什么ACL?让ACL与域模型分离是否聪明?
答案 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在行安全性方面存在根本缺陷。如果数据库支持视图或内置工具,则应在数据库中执行行安全性。