我读过关于 Spring ACL 的信息,但它似乎不是很能干。例如:
- 无法列出具有权限 Y 的所有类型 X 的对象
- 无法为新部署自动创建架构
你用什么做ACL?让 ACL 与域模型如此分离是否聪明?
我读过关于 Spring ACL 的信息,但它似乎不是很能干。例如:
你用什么做ACL?让 ACL 与域模型如此分离是否聪明?
我们尝试使用 Spring ACL 模型,但发现它很笨拙。我们最终推出了自己的、更简单(但也不太通用)的实现,然后编写了 Spring Security 部分(accessDecisionManagers、Voters、Interceptors)来处理我们的模式。希望有帮助。
您可能想看看Apache Shiro。
来自站点:Apache Shiro 是一个功能强大且易于使用的 Java 安全框架,它执行身份验证、授权、加密和会话管理。借助 Shiro 易于理解的 API,您可以快速轻松地保护任何应用程序——从最小的移动应用程序到最大的 Web 和企业应用程序。
许多人更喜欢 Shiro处理权限的方式
如果使用 Hibernate,您可以通过将其添加到以下内容来自动针对 db 运行 acl 模式persistence.xml
:
<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 在行安全方面存在根本缺陷。如果您的数据库支持,您应该使用视图或内置工具在数据库中执行行安全。