DaoAuthenticationProvider
DaoAuthenticationProvider
是一个使用 UserDetailsService
和 PasswordEncoder
来验证用户名和密码的 AuthenticationProvider
实现。
本节介绍 DaoAuthenticationProvider
在 Spring Security 中的工作原理。下图解释了来自 读取用户名和密码 部分的图中 AuthenticationManager
的工作原理。
DaoAuthenticationProvider
用法 来自 读取用户名和密码 部分的身份验证 Filter
将 UsernamePasswordAuthenticationToken
传递给 AuthenticationManager
,AuthenticationManager
由 ProviderManager
实现。
ProviderManager
配置为使用类型为 DaoAuthenticationProvider
的 AuthenticationProvider。
DaoAuthenticationProvider
从 UserDetailsService
中查找 UserDetails
。
DaoAuthenticationProvider
使用 PasswordEncoder
验证上一步返回的 UserDetails
上的密码。
当身份验证成功时,返回的 Authentication
的类型为 UsernamePasswordAuthenticationToken
,并且其主体是配置的 UserDetailsService
返回的 UserDetails
。最终,返回的 UsernamePasswordAuthenticationToken
由身份验证 Filter
设置在 SecurityContextHolder
上。