第一次配置和使用SpringSecurity,總是要碰很多次墻!
先說說個人理解的它里面比較有意義的架構。
里面有好多設計模式的影子:策略模式,代理模式,工廠模式,鏈條模式=====,看到這些模式(除了工廠或單例)心里總是會有些興奮,總算是看到了模式的真正練兵場!跟兄弟們好好分享一下!(才看了一天!有不對之處,還望各位斧正!)
策略模式(Strategy Pattern):
主要說一下session相關的這個策略模式,以SessionAuthenticationStrategy接口的策略劃分,根據我們的session安全策略,指定不同的策略,現在看是這種布局:
頂層接口 |
SessionAuthenticationStrategy |
|
|
具體實現 |
SessionFixationProtectionStrategy
(直接默認實現) |
NullAuthenticatedSessionStrategy
(空實現)
|
|
二級實現 |
ConcurrentSessionControlStrategy |
|
|
畫圖比較麻煩,各位還是湊合著看吧!說明一下:頂層接口被下面“具體實現”兩個類實現,而“二級實現”實現SessionFixationProtectionStrategy。具體采用哪種策略要看我們的配置了!
代理模式(Proxy):
很明顯的代理類,DelegatingFilterProxy和FilterChainProxy,這兩個類看著心里都癢癢的,呵呵,平常總是看代理模式呀什么的,即時看著例子也不踏實,現在看到這兩個東西,心里突然有種平靜的激動!
這兩個代理類以FilterChainProxy為例說明一下吧,FilterChainProxy代理了權限驗證Filters的工作,通過它來訪問整個過濾器串里面的過濾器。
Chain模式:這個也應該以FilterChainProxy這個類入口來分析,呵呵,有興趣的各位就通過這個來看看吧!