tft每日頭條

 > 生活

 > springsecurity認證模式

springsecurity認證模式

生活 更新时间:2025-01-24 05:24:44

我們知道 Spring Security 會将 DelegatingFilterProxy 插入到 Servlet Filter Chain 中,然後将要過濾的請求通過 FilterChainProxy 代理給匹配的 SecurityFilterChain;這些 SecurityFilterChain 中包含着真正做安全相關工作的 Filter 過濾器。

springsecurity認證模式(Security中的默認身份認證過濾器)1

springsecurity認證模式(Security中的默認身份認證過濾器)2

這些 Filter 過濾器中的一部分,它們的職責就是進行身份驗證,比如 UsernamePasswordAuthenticationFilter 和 BasicAuthenticationFilter

UsernamePasswordAuthenticationFilter 是一個 AbstractAuthenticationProcessingFilter 的子類,實現了 attemptAuthentication 方法,沒有重寫其他方法。

從繼承關系可以看到 BasicHttpAuthenticationFilter 繼承自抽象類 OncePerRequestFilter。

public class BasicAuthenticationFilter extends OncePerRequestFilter

OncePerRequestFilter 的字面意思是:Once Per Request,即每個請求隻執行一次。

BasicAuthenticationFilter 的實現并不複雜,無非是從 Authorization header 中取出用戶名密碼,然後創建出 UsernameAuthenticationToken,接着調用 AuthenticationManager.authenticate() 方法。

BasicAuthenticationFilter 使用和 UsernamePasswordAuthenticationFilter 一樣的 AuthenticationProvider。

springsecurity認證模式(Security中的默認身份認證過濾器)3

BasicAuthenticationFilter與 UsernamePasswordAuthenticationFilter 的區别在于認證之後的行為。

無論認證成功與否,BasicAuthenticationFilter 都不會做出重定向的響應。

  • 如果認證失敗,則通過默認的 BasicAuthenticationEntryPoint 返回 401 響應
  • 如果認證成功,則繼續執行 filter chain,這樣就能執行到真正的業務方法
,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved