首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

圖解Spring Security默認過濾器鏈

     編輯:Java 相關知識

當<http auto-config="true">啟用時,Spring Security自動註冊一組核心過濾器。本文逐一解析各過濾器職能與執行順序(圖7.1)。

過濾器列表與功能詳解

  1. HttpSessionContextIntegrationFilter(圖7.2):鏈首。從Session獲取SecurityContext放入SecurityContextHolder(ThreadLocal),無則創建新實例;請求結束時清理SecurityContextHolder防線程池污染。
  2. LogoutFilter(圖7.3):處理/j_spring_security_logout請求,銷毀Session、清空SecurityContextHolder、重定向到登出成功頁,可配合RememberMe清理Cookie。
  3. AuthenticationProcessingFilter(圖7.4):處理表單登錄提交/j_spring_security_check,驗證用戶名密碼,成功跳轉目標頁或默認頁,失敗跳轉錯誤頁。
  4. DefaultLoginPageGeneratingFilter(圖7.5):生成默認登錄頁(/spring_security_login),功能完整但樣式簡陋,僅供演示,實際項目應自定義(參考第4章)。
  5. BasicProcessingFilter(圖7.6):處理HTTP Basic認證,邏輯類似表單登錄但驗證方式不同。
  6. SecurityContextHolderAwareRequestFilter(圖7.7):包裝HttpServletRequest,提供getRemoteUser()等便利方法直接獲取當前登錄用戶名。
  7. RememberMeProcessingFilter(圖7.8):檢測Cookie中RememberMe標記,自動完成登錄並建立SecurityContext授予權限。
  8. AnonymousProcessingFilter(圖7.9):未登錄用戶自動賦予匿名身份與權限,保證後續授權邏輯統一處理。
  9. ExceptionTranslationFilter(圖7.10):捕獲FilterSecurityInterceptor拋出的AuthenticationCredentialsNotFoundException、AccessDeniedException,轉向登錄頁或返回403/401。
  10. SessionFixationProtectionFilter(圖7.11):防御Session固化攻擊,登錄成功後遷移Session ID。
  11. FilterSecurityInterceptor(圖7.12):鏈尾,核心授權點。未登錄拋AuthenticationCredentialsNotFoundException;已登錄無權拋AccessDeniedException;有權放行。

總結

理解默認過濾器鏈各節點職能,有助於自定義配置、擴展或排查安全問題。後續章節將深入各過濾器配置與用法。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved