Spring Security 的核心對象
適用於 Spring Security 5.4.x 以上版本.
SecurityFilterChain
根據匹配規則
Spring Security 中的過濾器鏈對象, 在沒有自定義 SecurityFilterChain 注入Ioc 容器時,在Spring Boot 自動配置類中,默認向 Ioc 容器中注入一個 defaultSecurityFilterchain 對象. 通過@ConditionalOnDefaultWebSecurity 註解實現該效果.
默認 SecurityFilterChain 按順序執行下面的過濾器:
FilterChainProxy
Security 的所有過濾器的 代理類, 實現Filter 接口.
HttpSecurity
用於構建過濾器鏈的對象
HttpSecurity 被 @Scope("protopye") 修飾,因此在其他 Bean 中注入 HttpSecurity Bean 時,會以該方法創建的對象作為原型,創建一個新的 HttpSecurity. 也稱為多例Bean.
在構建每個過濾器鏈 SecurityFilterChain 時,都會創建一個新的 HttpSecurity.
WebSecurity
用於構建 FilterChainProxy Bean.
Spring Boot 對 Security 的自動化配置
UserDetailsServiceAutoConfiguration
配置默認的用户管理器: InMemoryUserDetailsManager
詳情參考:[源碼剖析用户信息的管理者 --userdetailsmanager