Idea中如何查看SpringSecurity各Filter信息
Filter和Filter Chain
SpringSecurity的認(rèn)證邏輯是通過Filter Chain實現(xiàn)的,一個項目中Filter是鏈?zhǔn)綀?zhí)行,其中一環(huán)校驗不通過,則可終止后續(xù)Filter以及Api的調(diào)用。
? ? public void doFilter(ServletRequest request, ServletResponse response, ? ? ? ? ? ? FilterChain chain) throws IOException, ServletException;
在Filter的實現(xiàn)類中,doFilter方法里調(diào)用chain的doFilter方法,表示當(dāng)前過濾器通過,繼續(xù)FilterChain的下一個Filter
chain.doFilter(request, response);
Idea Evalute Expression
下面通過一個簡單的項目,來查看一下Spring Security中的Filter
創(chuàng)建工程
通過向?qū)?chuàng)建一個springBoot工程,引入web和security依賴
? ? ? ? <dependency> ? ? ? ? ? ? <groupId>org.springframework.boot</groupId> ? ? ? ? ? ? <artifactId>spring-boot-starter-security</artifactId> ? ? ? ? </dependency> ? ? ? ? <dependency> ? ? ? ? ? ? <groupId>org.springframework.boot</groupId> ? ? ? ? ? ? <artifactId>spring-boot-starter-web</artifactId> ? ? ? ? </dependency>
啟動類
@SpringBootApplication public class SpringSecurityLearningApplication { ? ? public static void main(String[] args) { ? ? ? ? ConfigurableApplicationContext applicationContext = SpringApplication.run(SpringSecurityLearningApplication.class, args); ? ? ? ? System.out.println(); ? ? } }
SpringApplication.run()的返回值就是Spring容器,ConfigurableApplicationContext是ApplicationContext的子類。
System.out.println();是為了便于打斷點,查看applicationContext的信息。
debug啟動服務(wù)
evaluate expression
通過郵件選Evaluate Expression或點擊debugger欄位上是圖標(biāo)
點擊輸入框右側(cè)的雙向箭頭,切換為Code fragment模式,個人覺得這個更好用
輸入以下內(nèi)容,獲取容器中的FilterChainProxy對象,再點擊窗口下側(cè)的Evaluate
result中的filterChains中的filters就是Filter鏈信息,其中,UsernamePasswordAuthenticationFilter、ExceptionTranslationFilter
以及FilterSecurityInterceptor為springSecurity認(rèn)證相關(guān)的Filter。
在平時debug時,如果list中的數(shù)據(jù)很多,憑肉眼去找肯定很難找,通過右鍵對象出來的filter很難用,可以通過Evaluate進(jìn)行代碼過濾,方便又快捷。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
解決MultipartFile.transferTo(dest) 報FileNotFoundExcep的問題
這篇文章主要介紹了解決MultipartFile.transferTo(dest) 報FileNotFoundExcep的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-07-07java以json格式向后臺服務(wù)器接口發(fā)送請求的實例
下面小編就為大家分享一篇java以json格式向后臺服務(wù)器接口發(fā)送請求的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-01-01SpringBoot + Spring Cloud Consul 服務(wù)注冊和發(fā)現(xiàn)詳細(xì)解析
這篇文章主要介紹了SpringBoot + Spring Cloud Consul 服務(wù)注冊和發(fā)現(xiàn),本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07