對于acegi-security用過spring的朋友一定聽說過,早就想學習一下,但一直沒有機會用,加上acegi-security本身很復雜,算起來從打算學到現在差不多都一年多了,版本也從0.5升到了1.1,正巧最近公司的業務處理中間件要提高安全性,要做一個權限管理控制的模塊,本來如果直接寫個攔截器就搞定了,不過本著不求最快但求最好的思想,決定用一下大名頂頂的acegi-security,咱們也來玩玩RBAC(基于角色的權限控制),參考了一些資料,主要來自springside,差不多搞明白了acegi-security是怎么回事,這里不重復別人的文字,主要談談我的使用經驗,如果是一般的j2ee web平臺直接使用差不多就沒什么問題,關鍵我們中間件是使用的內部協議,而不是http,學習acegi-security后,感覺它主要實現都是靠著filter來的,結果就自已寫了一個攔截器取代filter,然后使用自帶的(or springside的方法安全攔截器),安全控制算是整合上去了,后來發現現有的程序只有一個方法處理,并要從請求的數據中取得條件來判斷是否有權利調用后臺的業務模塊,說明白點就有點類似在http下的URL路徑,雖然acegi-security提供了方法的攔截,但好像不能攔截方法的參數,如果有的話我就可以通過參數來判斷是否有權限操作了,or把原來的程序改成一個一個的方法(純屬說笑,呵呵),這樣問題就很明顯了,acegi-security并沒有提供我們協議的安全攔截器(http中是FilterSecurityInterceptor),所以一切都得自已實現,從org.acegisecurity.intercept包下的基類和接口開始,參照它FilterSecurityInterceptor和MethodSecurityInterceptor照葫蘆畫瓢,我們自已的安全攔截器就出來了,目前系統已完全整成acegi,成為RBAC的權限控制管理
。ACL的權限控制還沒有仔細研究,acegi-security架構也還是有些模糊,此文有待補充...