AuthenticationProvider

AuthenticationProvider

有什么区别吗

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

09-26 15:50