<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
以下摘自胖哥分享的 2022開工福利教學。
在學習Spring Security的時候你有沒有下面這兩個疑問:
上面兩個疑問的答案就在設定類SpringBootWebSecurityConfiguration
中。你可以按照下面這個思維導圖去理解這個自動設定:
SpringBootWebSecurityConfiguration
為Spring Boot應用提供了一套預設的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(); }
這裡的設定為:所有的請求都必須是認證使用者發起的,同時開啟表單登入功能以及Http Basic Authentication認證功能。 我們存取/foo/bar
時需要登入認證並且能夠進行表單登入就是這個設定起作用了。這個是我們日常開發需要自定義的,在HttpSecurity
相關的文章中胖哥也進行了講解。這個SecurityFilterChain
到底是什麼呢?
從上面看得出HttpSecurity
就是一個構建類,它的使命就是構建出一個SecurityFilterChain
:
public interface SecurityFilterChain { // 當前請求是否匹配 boolean matches(HttpServletRequest request); // 一攬子過濾器組成的有序過濾器鏈 List<Filter> getFilters(); }
當一個請求HttpServletRequest
進入SecurityFilterChain
時,會通過matches
方法來確定是否滿足條件進入過濾器鏈。就好比你是VIP走的是VIP通道,享受的是VIP的一系列待遇;你是普通使用者,就走普通使用者的通道並享受普通使用者的待遇。
不管使用者是哪種角色,都走的是一個過濾器鏈,一個應用中存在1-n
個SecurityFilterChain
。那誰來管理多個SecurityFilterChain
呢?
記住這個公式HttpSecurity ->SecurityFilterChain
。
FilterChainProxy
是一個GenericFilterBean
(即使Servlet Filter又是Spring Bean),它管理了所有注入Spring IoC容器的SecurityFilterChain
。在我剛接觸Spring Security的時候是這樣設定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>
根據不同的請求路徑匹配走不同的SecurityFilterChain
。下面是示意圖:
後面還會對接觸這個類,現在你只需要明白上面這個圖就行了。
請注意:在同一過濾器鏈中不建議有多個FilterChainProxy
範例,而且不應將其作為單純的過濾器使用,它只應該承擔管理SecurityFilterChain
的功能。
Servlet 容器和Spring IoC容器之間的Filter生命週期並不匹配。為了讓Spring IoC容器管理Filter的生命週期,FilterChainProxy
便交由Spring Web下的DelegatingFilterProxy
來代理。而且FilterChainProxy
不會在新增到應用程式上下文的任何過濾器Bean上呼叫標準Servlet過濾器生命週期方法,FilterChainProxy
的生命週期方法會委託給DelegatingFilterProxy
來執行。而DelegatingFilterProxy
作為Spring IoC和Servlet的聯結器存在。
上面的三個概念非常重要,涉及到Spring Security的整個過濾器鏈體系。但是作為初學者來說,能看懂多少就看懂多少,不要糾結哪些沒有理解,因為目前學習階段的層次達不到是非常正常的。但是等你學完了Spring Security之後,這幾個概念一定要搞明白。
到此這篇關於Spring Security過濾器鏈體系的文章就介紹到這了,更多相關Spring Security過濾器鏈體系內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45