采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
这种 encoder 在将密码 存入数据库的时候 会不会带上算法的 prefix… 比如数据库里看到的是 {md5}xxxxx 还是 xxxx呢. 如果存入 db 的时候带了前缀, 比较时就会很高效, 不用把所有的算法全部循环一遍.
{md5}xxxxx
xxxx
我试了一下使用 DelegatingPasswordEncoder, 存入表中的密码都必须加上算法前缀, 不然 match 时会提示找不到null 这种算法, 类似: `There is no PasswordEncoder mapped for the id "null"`
示例:
PasswordEncoder passwordEncoder=PasswordEncoderFactories.createDelegatingPasswordEncoder(); String hash = MD5Utils.md5Hex("12345".getBytes()); System.out.println(hash); // match 时必须显式地给密文加上算法前缀 boolean b= passwordEncoder.matches("12345", "{MD5}" + hash); System.out.println("b = " + b);
遍历所有密码类型比较,是为了适配有一些老项目采用了不同的加密方式,无法全部修改的情况下,进行的一些适配,默认的话可以搜索类PasswordEncoderFactories,查询默认支持的11中密码加解密类型,以及默认的bcrypt类型
登录后可查看更多问答,登录/注册
商业级小程序 开发仿社交实战
642 6
366 6
579 3
677 3
848 3
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号