本文主要用于快速介紹Spring Filters及Filter Chain的相關概念,因為Filter是Spring Security用于實作認證和授權的底層實作方式
Spring Filters
Filter介紹
- 任何Spring Web應用本質上隻是一個servlet
- Security Filter在HTTP請求到達你的Controller之前過濾每一個傳入的HTTP請求
Security Filter實作流程

- 未認證是401
- 未授權是403
過濾器示例代碼
- 注意:上述是通過一個過濾器實作了 提取使用者名密碼 / 驗證使用者名密碼 / 校驗授權 等内容,而Spring Security實際是使用多個過濾器形成過濾器鍊進行處理
Filter Chain
Spring Security 是通過多個Filter形成過濾器鍊進行的認證和授權
Spring Security中常見的内建過濾器
- BasicAuthenticationFilter - 在請求中找一個Basic Auth HTTP頭,如果找到,則嘗試用該頭中的使用者名和密碼驗證使用者
- UsernamePasswordAuthenticationFilter - 如果在請求參數或者POST的Request Body中找到使用者名/密碼,則嘗試用這些值對使用者進行身份驗證
- DefaultLoginPageGeneratingFilter - 預設登入頁面生成過濾器。用于生成一個登入頁面,如果你沒有明确地禁用這個功能,那麼就會生成一個登入頁面。這就是為什麼在啟用Spring Security時,會得到一個預設登入頁面的原因
- DefaultLogoutPageGeneratingFilter - 如果沒有禁用該功能,則會生成一個登出頁面
- FilterSecurityInterceptor - 過濾安全攔截器。用于授權邏輯