使用acegi-security管理權(quán)限
對(duì)于acegi-security用過spring的朋友一定聽說過,早就想學(xué)習(xí)一下,但一直沒有機(jī)會(huì)用,加上acegi-security本身很復(fù)雜,算起來從打算學(xué)到現(xiàn)在差不多都一年多了,版本也從0.5升到了1.1,正巧最近公司的業(yè)務(wù)處理中間件要提高安全性,要做一個(gè)權(quán)限管理控制的模塊,本來如果直接寫個(gè)攔截器就搞定了,不過本著不求最快但求最好的思想,決定用一下大名頂頂?shù)腶cegi-security,咱們也來玩玩RBAC(基于角色的權(quán)限控制),參考了一些資料,主要來自springside,差不多搞明白了acegi-security是怎么回事,這里不重復(fù)別人的文字,主要談?wù)勎业氖褂媒?jīng)驗(yàn),如果是一般的j2ee web平臺(tái)直接使用差不多就沒什么問題,關(guān)鍵我們中間件是使用的內(nèi)部協(xié)議,而不是http,學(xué)習(xí)acegi-security后,感覺它主要實(shí)現(xiàn)都是靠著filter來的,結(jié)果就自已寫了一個(gè)攔截器取代filter,然后使用自帶的(or springside的方法安全攔截器),安全控制算是整合上去了,后來發(fā)現(xiàn)現(xiàn)有的程序只有一個(gè)方法處理,并要從請(qǐng)求的數(shù)據(jù)中取得條件來判斷是否有權(quán)利調(diào)用后臺(tái)的業(yè)務(wù)模塊,說明白點(diǎn)就有點(diǎn)類似在http下的URL路徑,雖然acegi-security提供了方法的攔截,但好像不能攔截方法的參數(shù),如果有的話我就可以通過參數(shù)來判斷是否有權(quán)限操作了,or把原來的程序改成一個(gè)一個(gè)的方法(純屬說笑,呵呵),這樣問題就很明顯了,acegi-security并沒有提供我們協(xié)議的安全攔截器(http中是FilterSecurityInterceptor),所以一切都得自已實(shí)現(xiàn),從org.acegisecurity.intercept包下的基類和接口開始,參照它FilterSecurityInterceptor和MethodSecurityInterceptor照葫蘆畫瓢,我們自已的安全攔截器就出來了,目前系統(tǒng)已完全整成acegi,成為RBAC的權(quán)限控制管理。ACL的權(quán)限控制還沒有仔細(xì)研究,acegi-security架構(gòu)也還是有些模糊,此文有待補(bǔ)充...
posted on 2006-09-16 09:41 The One 閱讀(1260) 評(píng)論(0) 編輯 收藏