DaoAuthenticationProvider认证处理器通过UserDetailsService获取到UserDetails后,它是如何与请求 Authentication中的密码做对比呢?
在这里Spring Security为了适应多种多样的加密类型,又做了抽象,DaoAuthenticationProvider通过PasswordEncoder接口的matches方法进行密码的对比,而具体的密码对比细节取决于实现:
package org.springframework.security.crypto.password;
public interface PasswordEncoder {
String encode(CharSequence var1);
boolean matches(CharSequence var1, String var2);
}
而Spring Security提供很多内置的PasswordEncoder,能够开箱即用,使用某种PasswordEncoder只需要进行如 下声明即可,如下:
@Bean
public PasswordEncoder passwordEncoder()
{
return new BCryptPasswordEncoder();
}
使用:
在SecurityConfig添加PasswordEncoder方法:
@Bean
public PasswordEncoder passwordEncoder()
{
return new BCryptPasswordEncoder();
}