溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

關(guān)于Spring Security過(guò)濾器鏈機(jī)制和特性的案例分析

發(fā)布時(shí)間:2020-07-07 11:09:41 來(lái)源:億速云 閱讀:145 作者:清晨 欄目:開(kāi)發(fā)技術(shù)

這篇文章主要介紹關(guān)于Spring Security過(guò)濾器鏈機(jī)制和特性的案例分析,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

1. 前言

過(guò)濾器作為 Spring Security 的重中之重,我們需要了解其中的機(jī)制。這樣我們才能根據(jù)業(yè)務(wù)需求的變化進(jìn)行定制。今天來(lái)探討一下 Spring Security 中的過(guò)濾器鏈機(jī)制。

2. Spring Security 過(guò)濾器鏈

客戶端(APP 和后臺(tái)管理客戶端)向應(yīng)用程序發(fā)送請(qǐng)求,然后應(yīng)用根據(jù)請(qǐng)求的 URI 的路徑來(lái)確定該請(qǐng)求的過(guò)濾器鏈(Filter)以及最終的具體 Servlet 控制器(Controller)。

關(guān)于Spring Security過(guò)濾器鏈機(jī)制和特性的案例分析

從上圖我們可以看出 Spring Security 以一個(gè)單 Filter(FilterChainProxy) 存在于整個(gè)過(guò)濾器鏈中,而這個(gè) FilterChainProxy 實(shí)際內(nèi)部代理著眾多的 Spring Security Filter 。這簡(jiǎn)直就是套娃啊!

2.1 過(guò)濾器鏈的形成過(guò)程

再多說(shuō)一點(diǎn) Filter 們的初始化過(guò)程,首先 Filter 們按照一定的順序被 SecurityBuilder 的實(shí)現(xiàn)來(lái)組裝為 SecurityFilterChain ,然后通過(guò) WebSecurity 注入到 FilterChainProxy 中去,接著 FilterChainProxy 又在 WebSecurityConfiguration 中以 springSecurityFilterChain 的名稱注冊(cè)為 Spring Bean 。實(shí)際上還有一個(gè)隱藏層 DelegatingFilterProxy 代理了 springSecurityFilterChain 注入到最后整個(gè) Servlet 過(guò)濾器鏈中。簡(jiǎn)單畫(huà)了個(gè)圖;

關(guān)于Spring Security過(guò)濾器鏈機(jī)制和特性的案例分析

事實(shí)上 Spring Security 的內(nèi)置 Filter 對(duì)于 Spring IoC 容器來(lái)說(shuō)都是不可見(jiàn)的。

Spring Security 允許有多 條過(guò)濾器鏈并行,Spring SecurityFilterChainProxy 可以代理多條過(guò)濾器鏈并根據(jù)不同的 URI 匹配策略進(jìn)行分發(fā)。但是每個(gè)請(qǐng)求每次只能被分發(fā)到一條過(guò)濾器鏈。如下圖所示:

關(guān)于Spring Security過(guò)濾器鏈機(jī)制和特性的案例分析

關(guān)于 Filter 的其它細(xì)節(jié)可以通過(guò) 相關(guān)文章[1] 了解。

實(shí)際每條過(guò)濾鏈 就是一個(gè) SecurityFilterChain

以上是關(guān)于Spring Security過(guò)濾器鏈機(jī)制和特性的案例分析的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI