使用spring security明文密码校验时报错-BadCredentialsException: Bad credentials的问题
问题描述-
在学习spring security时使用明文密码进行登录校验时报错"org.springframework.security.authentication.BadCredentialsException: Bad credentials(坏 凭 证)",
1`校验时数据库密码同样是明文密码
2`校验时已经将{noop}拼接但还是报错
问题解决-
使用spring security5.0后,配置文件中直接写普通的密码如:123456,会报错:
java.lang.IllegalArgumentException: There is no PasswordEncoder mapped for the id "null"
这是因为spring security5.0以后默认需要选择密码加密方式,如果还想用简单密码的话,spring security还是给了两个方案,一种是在配置文件中配置:
1`在xml中配置NoOpPasswordEncoder
<bean id="passwordEncoder" class="org.springframework.security.crypto.password.NoOpPasswordEncoder" factory-method="getInstance"/>
2`在你校验时密码拼接{noop}
"{noop}"+userInfo.getPassword()问题后续-
在使用方法2时,既xml配置没有设置使用加密密码编码(PasswordEncoder)时,校验时拼接{noop}依旧检验不成功,原因未知.
后选用在xml中配置不适用加密编码时,去掉拼接的{noop}校验成功了.
再使用bCryptPasswordEncoder.encode(password)方法生成加密密码后手动存入数据库,再开启xml的配置一切正常.
参考资料
相关文章
我们来说说Java LockSupport 的 park 和 unpa
LockSupport是JDK底层线程阻塞工具,通过park/unpark实现线程阻塞与唤醒,避免死锁,与Object的wait/notify相比,无需监视器,支持先unpark后park,且更精确控制线程状态,是AQS等同步器的核心基础,本文介绍Java LockSupport 的 park 和 unpark,感兴趣的朋友一起看看吧2025-07-07


最新评论