未經(jīng)許可的轉(zhuǎn)載,本人保留一切法律權(quán)益。
Spring Security 3.x 出來一段時間了,跟Acegi是大不同了,與2.x的版本也有一些小小的區(qū)別,網(wǎng)上有一些文檔,也有人翻譯Spring Security 3.x的guide,但通過閱讀guide,無法馬上就能很容易的實現(xiàn)一個完整的實例。
我花了點兒時間,根據(jù)以前的實戰(zhàn)經(jīng)驗,整理了一份完整的入門教程,供需要的朋友們參考。
1,建一個web project,并導(dǎo)入所有需要的lib,這步就不多講了。
2,配置web.xml,使用Spring的機制裝載:

































2,來看看applicationContext-security.xml這個配置文件,關(guān)于Spring Security的配置均在其中:























































3,來看看自定義filter的實現(xiàn):


















































































4,來看看authentication-provider的實現(xiàn):


































5,對于資源的訪問權(quán)限的定義,我們通過實現(xiàn)FilterInvocationSecurityMetadataSource這個接口來初始化數(shù)據(jù)。































































這個類中,還有一個最核心的地方,就是提供某個資源對應(yīng)的權(quán)限定義,即getAttributes方法返回的結(jié)果。注意,我例子中使用的是AntUrlPathMatcher這個path matcher來檢查URL是否與資源定義匹配,事實上你還要用正則的方式來匹配,或者自己實現(xiàn)一個matcher。
6,剩下的就是最終的決策了,make a decision,其實也很容易,呵呵。





















































參考資料:
1,Spring官方網(wǎng)站:http://www.springframework.org
2,文章所用的代碼,MyEclipse工程,去掉了lib,請自行下載Spring Security 3.x的包,并copy至對應(yīng)目錄。工程源代碼
3,根據(jù)網(wǎng)絡(luò)上的資料,制作的CHM版的 Spring Security 3.x 參考手冊中文版
4,2009年3月,我在“IBM WebSphere技術(shù)專家沙龍(華南區(qū)廣州站)”演講時的PPT:《Spring Security--Protect your web application》,當時是Spring Security 2.x,很多原理是一樣,可作參考。
教程中為了盡可能不跟其它框架關(guān)聯(lián)上,所以去掉了訪問數(shù)據(jù)庫的部分,比如用戶信息和資源配置信息的讀取,直接寫死在代碼中了,大家可以根據(jù)自己的實際情況補充完整。
如有任何疑問,歡迎大家以評論的方式提問,也歡迎大家討論!