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