AuthenticationManager和AuthenticationProvider的区别在Spring Security中验证方法

时间:2017-07-22 22:03:22

标签: spring-boot spring-security

有什么不同吗?
Authentication auth= authenticationManager.authenticate(authentication);

 Authentication auth= authenticationProvider.authenticate(authentication);

1 个答案:

答案 0 :(得分:9)

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