一.简介
在前面的文章有提到过PasswordEncoder: 为什么密码使用{noop}开头呢?也做出了相应的解释,这篇文章了解PasswordEncoder。
二.PassworderEncoder 详解
2.1主要方法
- String encode(CharSequence rawPassword):密码加密
- boolean matches(CharSequence rawPassword, String encodedPassword):密码匹配
- boolean upgradeEncoding(String encodedPassword): 升级密码,使用新规则来更新旧密码规则
2.2主要实现
- DelegatingPasswordEncoder 加密代理 默认的PassworderEncoder实例
- BCryptPasswordEncoder DelegatingPasswordEncoder 中默认的加密方式
- NoOpPasswordEncoder 不加密
- LazyPasswordEncoder 需要用的时候才初始化
- MessageDigestPasswordEncoder
- Md4PasswordEncoder
2.3默认PasswordEncoder
默认PasswordEncoder的代码如下:
public static PasswordEncoder createDelegatingPasswordEncoder() {
String encodingId = "bcrypt";
Map<String, PasswordEncoder> encoders = new HashMap<>();
encoders.put(encodingId, new BCryptPasswordEncoder());
encoders.put("ldap", new org.springframework.security.crypto.password.LdapShaPasswordEncoder());
encoders.put("MD4", new org.springframework.security.crypto.password.Md4PasswordEncoder());
encoders.put("MD5", new org.springframework.security.crypto.password.MessageDigestPasswordEncoder("MD5"));
encoders