UserDetailsServiceAutoConfiguration
????????Spring Security 提供了多种密码加密方案,官方推荐使用 BCryptPasswordEncoder,BCryptPasswordEncoder 使用 BCrypt 强哈希函数,开发者在使用时可以选择提供 strength 和 SecureRandom 实例。strength 越大,密钥的迭代次数越多,密钥迭代次数为 2^strength。strength 取值在 4~31 之间,默认为 10。不同于 Shiro 中需要自己处理密码加盐,在 Spring Security 中,BCryptPasswordEncoder 就自带了盐,处理起来非常方便。而 BCryptPasswordEncoder 就是 PasswordEncoder 接口的实现类。
public interface PasswordEncoder {
/*
* encode 方法用来对明文密码进行加密,返回加密之后的密文
*/
String encode(CharSequence var1);
/*
* matches方法是一个密码校对方法,在用户登录的时候,将用户传来的明文密码和数据库中保存的密文密码作为参数,
* 传入到这个方法中去,根据返回的 Boolean 值判断用户密码是否输入正确
*/
boolean matches(CharSequence var1, String var2);
/*
* upgradeEncoding 是否还要进行再次加密,这个一般来说就不用了
*/
default boolean upgradeEncoding(String encodedPassword) {
return false;
}
}
?