异常背景
在使用Spring Security 框架,登录的时候,账号和密码都正确,但是登录失败,弹出这个异常
异常信息
There is no PasswordEncoder mapped for the id “null”
翻译过来就是: PasswordEncoder的映射ID不能为“ null”
我寻思着,我不是输入密码了吗,调试发现密码也传递过去了,怎么就为空了呢?
查阅资料发现这是因为Spring security 5.0中新增了多种加密方式,也改变了密码的格式。修改后的密码存储格式为:{id}encodedPassword
前端传过来密码后,程序会查找被 花括号"{}"包括起来的id ,以此来确定后面的密码怎么进行加密,而我们在前面并没有按该格式进行处理,这就导致找不到id,就报错了。
明白了报错的原因,就好解决了, 我们只需要对前端传过来的密码进行某种方式加密,就可以了
解决方案
方式一: 设置不对密码进行加密, (不推荐使用)
只需要在给密码前面拼接一个{noop}
字符串就行了
方式二: 对密码进行bcrypt加密,这是官方推荐的一种加密方式
如何使用,请看我的另外一篇博客: https://editor.csdn.net/md?articleId=103539531