有什么区别吗
Authentication auth= authenticationManager.authenticate(authentication);
和
Authentication auth= authenticationProvider.authenticate(authentication);
最佳答案
AuthenticationManager
保存AuthenticationProvider
实例的列表。
当执行authenticationManager.authenticate()
时
这实际上是对AuthenticationProvider
的所有实例进行迭代,并尝试对每个实例进行身份验证。AuthenticationManager
的默认Spring实现是org.springframework.security.authentication.ProviderManager
实际身份验证是在AuthenticationProvider内部执行的。
每个AuthenticationProvider
都包含UserDetailsService
实例,该实例负责从数据库或LDAP中获取用户信息(包括哈希密码)。从数据库中成功检索到UserDetails
实例后
然后,AuthenticationProvider
将使用PasswordEncoder
的实例检查用户提供的密码是否与您从数据库中检索到的哈希密码匹配。
更多信息在这里http://docs.spring.io/spring-security/site/docs/2.0.8.RELEASE/apidocs/org/springframework/security/providers/ProviderManager.html
这里https://docs.spring.io/spring-security/site/docs/current/apidocs/org/springframework/security/authentication/dao/DaoAuthenticationProvider.html