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

8

我了解Spring ACL,但它似乎不是很强大。例如:

  1. 没有办法列出所有具有权限Y的X类型对象
  2. 没有办法自动为新部署创建模式

你使用什么来进行访问控制?将ACL与领域模型如此解耦是否明智?


你最终做了什么?自己编写了吗? - NimChimpsky
3个回答

12

我们曾尝试使用Spring ACL模型,但发现它很笨重。最终我们选择了自己编写一个更简单的实现(虽然不如原来那么通用),然后编写了Spring Security组件(accessDecisionManagers、Voters、Interceptors) 来处理我们的模式。希望这能有所帮助。


4
你可能想看看Apache Shiro
从网站上了解到:Apache Shiro是一个强大且易于使用的Java安全框架,可执行身份验证、授权、加密和会话管理。通过Shiro易于理解的API,您可以快速轻松地保护任何应用程序 - 从最小的移动应用程序到最大的Web和企业应用程序。
许多人更喜欢Shiro 处理权限的方式。

1
Shiro唯一的问题是没有OpenID或OAuth。主要的问题报告已经存在了五年之久,而且最多每周只会得到一次关注。这真是太遗憾了,因为除此之外,Shiro看起来真的很不错,比Spring或Spring ACL简单得多。 - Dennis

0
如果使用Hibernate,您可以通过将以下内容添加到来自动运行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在分页问题上存在根本性的缺陷。如果您的数据库支持,应该使用视图或内置工具在数据库中实现行安全。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接