7

我读过关于 Spring ACL 的信息,但它似乎不是很能干。例如:

  1. 无法列出具有权限 Y 的所有类型 X 的对象
  2. 无法为新部署自动创建架构

你用什么做ACL?让 ACL 与域模型如此分离是否聪明?

4

3 回答 3

12

我们尝试使用 Spring ACL 模型,但发现它很笨拙。我们最终推出了自己的、更简单(但也不太通用)的实现,然后编写了 Spring Security 部分(accessDecisionManagers、Voters、Interceptors)来处理我们的模式。希望有帮助。

于 2010-10-20T16:33:58.400 回答
4

您可能想看看Apache Shiro

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

许多人更喜欢 Shiro处理权限的方式

于 2012-04-25T21:47:32.840 回答
0

如果使用 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 在行安全方面存在根本缺陷。如果您的数据库支持,您应该使用视图或内置工具在数据库中执行行安全。

于 2015-02-19T18:14:09.240 回答