2010-10-20 71 views
6

我已閱讀關於春季ACL,但它似乎不是很能幹。例如:Spring ACL是一個很好的ACL實現嗎?

  1. 沒有辦法列出許可Ÿ
  2. 沒有辦法自動爲您使用的ACL有什麼新的部署

的模式類型X的所有對象?將ACL從域模型中解耦出來很聰明嗎?

+0

你到底做了什麼?滾動你自己的? – NimChimpsky 2013-09-26 13:21:53

回答

11

我們試圖使用Spring ACL模型,發現它很笨拙。我們結束了我們自己的,更簡單的(但不太通用的)實現,然後編寫Spring Security部分(accessDecisionManagers,Voters,Interceptors)來處理我們的模式。希望有所幫助。

3

您可能想看看Apache Shiro

來自站點:Apache Shiro是一個功能強大且易於使用的Java安全框架,可執行身份驗證,授權,加密和會話管理。藉助Shiro易於理解的API,您可以快速輕鬆地保護任何應用程序 - 從最小的移動應用程序到最大的Web和企業應用程序。

許多人喜歡的方式四郎handles permissions

+1

關於Shiro的唯一bugaboo,沒有OpenID或OAuth。主要的問題報告已有五年曆史,最多隻能每週關注一次。一個恥辱,因爲否則,Shiro看起來非常好,遠比Spring或Spring ACL簡單 – Dennis 2013-05-26 05:43:51

0

如果使用Hibernate,就可以自動加入此運行鍼對數據庫的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

您可以列出類似X的所有對象,並且具有許可權Y,如下所示:

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在行安全性方面存在根本性缺陷。如果您的數據庫支持它們,您應該在數據庫中使用視圖或內置工具來執行行安全性。