BasicAuthenticationFilter和UsernamePasswordAuthenticationFilter哪个先执行
时间: 2024-08-15 09:08:08 浏览: 34
sp-security:Spring-boot-security模板。 只是为了更好地理解该模块而做
`BasicAuthenticationFilter` 和 `UsernamePasswordAuthenticationFilter` 都是 Spring Security 中用于处理基于用户名和密码的身份验证的过滤器。它们通常在Spring Security的访问控制链中按特定顺序执行。
`BasicAuthenticationFilter` 会首先尝试解析HTTP头中的基本认证信息,如果请求包含有效的Base64编码的用户名和密码,它将自动完成认证过程。这个过滤器主要用于那些未启用session、采用HTTP基本认证的场景。
而 `UsernamePasswordAuthenticationFilter` 是更通用的选择,它适用于所有支持标准Spring Security认证机制的应用。它会检查是否已经有一个已存在的 `Authentication` 对象,如果没有则会触发登录处理器进行用户输入验证,并创建一个新的 `Authentication` 对象。
一般来说,在Spring Security默认配置下,`BasicAuthenticationFilter` 先于 `UsernamePasswordAuthenticationFilter` 执行,因为前者是基于HTTP头部的预授权验证,如果验证失败,后面的过滤器不会被执行。但如果应用需要自定义登录流程或者使用了其他身份验证机制,这两个过滤器的执行顺序可能会有所不同,具体依赖于你的安全配置。
阅读全文