最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring?Security過(guò)濾器鏈體系的實(shí)例詳解

 更新時(shí)間:2022年02月11日 08:38:04   作者:碼農(nóng)小胖哥  
這篇文章主要介紹了Spring?Security過(guò)濾器鏈體系,通過(guò)思維導(dǎo)圖可以很好的幫助大家理解配置類的相關(guān)知識(shí),結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下

以下摘自胖哥分享的 2022開(kāi)工福利教程。

在學(xué)習(xí)Spring Security的時(shí)候你有沒(méi)有下面這兩個(gè)疑問(wèn):

  • Spring Security的登錄是怎么配置的?
  • Spring Security的訪問(wèn)控制是什么機(jī)制?

SpringBootWebSecurityConfiguration

上面兩個(gè)疑問(wèn)的答案就在配置類SpringBootWebSecurityConfiguration中。你可以按照下面這個(gè)思維導(dǎo)圖去理解這個(gè)自動(dòng)配置:

SpringBootWebSecurityConfiguration為Spring Boot應(yīng)用提供了一套默認(rèn)的Spring Security配置。

@Bean
	@Order(SecurityProperties.BASIC_AUTH_ORDER)
	SecurityFilterChain defaultSecurityFilterChain(HttpSecurity http) throws Exception {
		http.authorizeRequests().anyRequest().authenticated().and().formLogin().and().httpBasic();
		return http.build();
	}

這里的配置為:所有的請(qǐng)求都必須是認(rèn)證用戶發(fā)起的,同時(shí)開(kāi)啟表單登錄功能以及Http Basic Authentication認(rèn)證功能。 我們?cè)L問(wèn)/foo/bar時(shí)需要登錄認(rèn)證并且能夠進(jìn)行表單登錄就是這個(gè)配置起作用了。這個(gè)是我們?nèi)粘i_(kāi)發(fā)需要自定義的,在HttpSecurity相關(guān)的文章中胖哥也進(jìn)行了講解。這個(gè)SecurityFilterChain到底是什么呢?

SecurityFilterChain

從上面看得出HttpSecurity就是一個(gè)構(gòu)建類,它的使命就是構(gòu)建出一個(gè)SecurityFilterChain

public interface SecurityFilterChain {
   //  當(dāng)前請(qǐng)求是否匹配
	boolean matches(HttpServletRequest request);
    // 一攬子過(guò)濾器組成的有序過(guò)濾器鏈
	List<Filter> getFilters();
}

當(dāng)一個(gè)請(qǐng)求HttpServletRequest進(jìn)入SecurityFilterChain時(shí),會(huì)通過(guò)matches方法來(lái)確定是否滿足條件進(jìn)入過(guò)濾器鏈。就好比你是VIP走的是VIP通道,享受的是VIP的一系列待遇;你是普通用戶,就走普通用戶的通道并享受普通用戶的待遇。

不管用戶是哪種角色,都走的是一個(gè)過(guò)濾器鏈,一個(gè)應(yīng)用中存在1-n個(gè)SecurityFilterChain。那誰(shuí)來(lái)管理多個(gè)SecurityFilterChain呢?

記住這個(gè)公式HttpSecurity ->SecurityFilterChain。

FilterChainProxy

FilterChainProxy是一個(gè)GenericFilterBean(即使Servlet Filter又是Spring Bean),它管理了所有注入Spring IoC容器的SecurityFilterChain。在我剛接觸Spring Security的時(shí)候是這樣配置FilterChainProxy的:

 <bean id="myfilterChainProxy" class="org.springframework.security.web.FilterChainProxy">
        <constructor-arg>
            <util:list>
                <security:filter-chain pattern="/do/not/filter*" filters="none"/>
                <security:filter-chain pattern="/**" filters="filter1,filter2,filter3"/>
            </util:list>
        </constructor-arg>
    </bean>

根據(jù)不同的請(qǐng)求路徑匹配走不同的SecurityFilterChain。下面是示意圖:

后面還會(huì)對(duì)接觸這個(gè)類,現(xiàn)在你只需要明白上面這個(gè)圖就行了。

請(qǐng)注意:在同一過(guò)濾器鏈中不建議有多個(gè)FilterChainProxy實(shí)例,而且不應(yīng)將其作為單純的過(guò)濾器使用,它只應(yīng)該承擔(dān)管理SecurityFilterChain的功能。

DelegatingFilterProxy

Servlet 容器和Spring IoC容器之間的Filter生命周期并不匹配。為了讓Spring IoC容器管理Filter的生命周期,FilterChainProxy便交由Spring Web下的DelegatingFilterProxy來(lái)代理。而且FilterChainProxy不會(huì)在添加到應(yīng)用程序上下文的任何過(guò)濾器Bean上調(diào)用標(biāo)準(zhǔn)Servlet過(guò)濾器生命周期方法,FilterChainProxy的生命周期方法會(huì)委托給DelegatingFilterProxy來(lái)執(zhí)行。而DelegatingFilterProxy作為Spring IoC和Servlet的連接器存在。

簡(jiǎn)單總結(jié)

上面的三個(gè)概念非常重要,涉及到Spring Security的整個(gè)過(guò)濾器鏈體系。但是作為初學(xué)者來(lái)說(shuō),能看懂多少就看懂多少,不要糾結(jié)哪些沒(méi)有理解,因?yàn)槟壳皩W(xué)習(xí)階段的層次達(dá)不到是非常正常的。但是等你學(xué)完了Spring Security之后,這幾個(gè)概念一定要搞明白。

到此這篇關(guān)于Spring Security過(guò)濾器鏈體系的文章就介紹到這了,更多相關(guān)Spring Security過(guò)濾器鏈體系內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java中使用Files.readLines()處理文本中行數(shù)據(jù)方式

    java中使用Files.readLines()處理文本中行數(shù)據(jù)方式

    這篇文章主要介紹了java中使用Files.readLines()處理文本中行數(shù)據(jù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • JAVA多線程進(jìn)階方式(Runnable接口的講解和運(yùn)用)

    JAVA多線程進(jìn)階方式(Runnable接口的講解和運(yùn)用)

    這篇文章主要介紹了JAVA多線程進(jìn)階方式(Runnable接口的講解和運(yùn)用),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • 關(guān)于Java 中的 Lambda 表達(dá)式

    關(guān)于Java 中的 Lambda 表達(dá)式

    這篇文章主要介紹了關(guān)于Java 中的 Lambda 表達(dá)式,Lambda 表達(dá)式是 Java 涉足函數(shù)式編程的過(guò)程。它接受參數(shù)并將其應(yīng)用于表達(dá)式或代碼塊,下面一起進(jìn)入文章查看詳細(xì)內(nèi)容
    2021-11-11
  • 基于Mybatis實(shí)現(xiàn)CRUD操作過(guò)程解析(xml方式)

    基于Mybatis實(shí)現(xiàn)CRUD操作過(guò)程解析(xml方式)

    這篇文章主要介紹了基于Mybatis實(shí)現(xiàn)CRUD操作過(guò)程解析(xml方式),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • Java同步函數(shù)代碼詳解

    Java同步函數(shù)代碼詳解

    這篇文章主要介紹了Java線程中的同步函數(shù)的相關(guān)內(nèi)容,涉及了實(shí)例代碼,需要的朋友,可以參考下。
    2017-10-10
  • MyBatis-Plus?中?typeHandler?的使用實(shí)例詳解

    MyBatis-Plus?中?typeHandler?的使用實(shí)例詳解

    本文介紹了在MyBatis-Plus中如何使用typeHandler處理json格式字段和自定義typeHandler,通過(guò)使用JacksonTypeHandler,可以簡(jiǎn)單實(shí)現(xiàn)將實(shí)體類字段轉(zhuǎn)換為json格式存儲(chǔ),感興趣的朋友跟隨小編一起看看吧
    2024-10-10
  • Java 14 發(fā)布了,你還會(huì)使用Lombok?

    Java 14 發(fā)布了,你還會(huì)使用Lombok?

    2020年3月17日發(fā)布,Java正式發(fā)布了JDK 14 ,目前已經(jīng)可以開(kāi)放下載。在JDK 14中,共有16個(gè)新特性,本文主要來(lái)介紹其中的一個(gè)特性:JEP 359: Records,需要的朋友可以參考下
    2020-04-04
  • Java 實(shí)戰(zhàn)范例之精美網(wǎng)上音樂(lè)平臺(tái)的實(shí)現(xiàn)

    Java 實(shí)戰(zhàn)范例之精美網(wǎng)上音樂(lè)平臺(tái)的實(shí)現(xiàn)

    讀萬(wàn)卷書(shū)不如行萬(wàn)里路,只學(xué)書(shū)上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+vue+Springboot+ssm+mysql+maven+redis實(shí)現(xiàn)一個(gè)前后端分離的精美網(wǎng)上音樂(lè)平臺(tái),大家可以在過(guò)程中查缺補(bǔ)漏,提升水平
    2021-11-11
  • SpringBoot如何在普通類加載Spring容器

    SpringBoot如何在普通類加載Spring容器

    這篇文章主要介紹了SpringBoot如何在普通類加載Spring容器,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • springboot下添加日志模塊和設(shè)置日志文件輸出的方法

    springboot下添加日志模塊和設(shè)置日志文件輸出的方法

    日志的使用將通過(guò)SLF4J來(lái)使用,SLF4J是一個(gè)為Java應(yīng)用提供簡(jiǎn)單日志記錄的接口,在Spring框架中,SLF4J常常用于處理框架本身以及應(yīng)用程序的日志記錄,本文給大家介紹springboot下添加日志模塊和設(shè)置日志文件輸出的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2023-12-12

最新評(píng)論

安龙县| 邳州市| 建宁县| 永吉县| 徐闻县| 综艺| 登封市| 崇文区| 集贤县| 永川市| 绥江县| 仁布县| 青铜峡市| 江永县| 南江县| 道孚县| 泸溪县| 思茅市| 宜丰县| 郓城县| 如皋市| 尚志市| 喀喇沁旗| 怀远县| 呼玛县| 益阳市| 漳浦县| 闸北区| 长宁县| 衡东县| 怀远县| 板桥市| 北流市| 金湖县| 富民县| 孟津县| 陇南市| 威海市| 香港| 宣化县| 湄潭县|