博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
升级到spring security5遇到的坑-密码存储格式
阅读量:6844 次
发布时间:2019-06-26

本文共 1444 字,大约阅读时间需要 4 分钟。

 

遇到的问题 

将spring security oauth2(包括spring security)升级到最新,代码没有改动,运行项目没有报错,但是页面登陆时报错:There is no PasswordEncoder mapped for the id “null”

然后一顿百度和google,其中看到两处有帮助的资料: 

 

总的来说就是,人家把spring security的密码存储格式改了,没办法,用人家的东西就要按照人家规定的做,将所有的密码格式改掉吧。

格式:{id}encodedPassword

这id是一个标识符,用于查找是哪个PasswordEncoder,也就是你密码加密的格式所对应的PasswordEncoder。encodedPassword是指原始加密后的密码(有点绕,简单来说就是你原来存储的密码)。在id必须在密码的开始,id前后必须加{}。如果id找不到,id则会为空。 

spring security中的所有默认的密码格式都是在PasswordEncoderFactories这个 类中,可以进入这个类中自行查看。

注意: 

1. 前端发送的登陆密码,是不需要为{id}encodedPassword格式的。 
2. 如果你配置了spring security oauth2

@Override    public void configure(ClientDetailsServiceConfigurer clients) throws Exception { clients.inMemory().withClient("client").secret("{noop}secret") .authorizedGrantTypes("client_credentials", "password", "refresh_token").scopes("all"); }
  • 1
  • 2
  • 3
  • 4
  • 5

代码中的secret也必须{id}encodedPassword格式。

https://blog.csdn.net/smollsnail/article/details/78934188

 

情景:

在一个后台admin系统中,为了安全用到Spring Security,我开启了in-memory方式(就是登陆后,在内存中先认证,是否内存中写死的账号是否就是用户登录的那个账号,密码),但是又在其后面加入了“从数据库中查找出该账号是否存在”,这种认证方式。

在这两种方式下,我登录,先输入一个在数据库中存在的账号,显示,正常登录进来。

又一次登录后,我输入一个在数据库中找不到但是在内存中写死的账号,系统报异常,但是正常登录进来。

再一次登录后,我输入一个既不在数据库中,也不在内存中的账号,这次,真登录不了了。

那么,这是不是就证明了,在这两种方式下,默认先去数据库中查找,然后不管成功与否“或上”(||)是否为内存中的账号。

https://blog.csdn.net/u012582402/article/details/54292488

 

 

解决springsecurity资源权限一次加载,导致角色授资源要重启服务问题

https://blog.csdn.net/y666666y/article/details/70212064

 

 

 

https://www.baeldung.com/spring-security-5-default-password-encoder

 

你可能感兴趣的文章
知否 ?知否 ?React 插件了解一下!
查看>>
非orm的node.js 查询库
查看>>
4.原始类型优于封装对象
查看>>
node.js构建静态服务器
查看>>
WWDC 2018:IAP最佳实践并增强活动营销功能
查看>>
ng-notadd 0.10.1,基于 Angular7 和 material2 的中后台解决方案
查看>>
米筐三季度策略精选
查看>>
从零搭建React项目
查看>>
LAMP和LNMP加速与缓存优化
查看>>
解决scrollView上subView下移20point问题的一种方式
查看>>
定时任务与发送邮件
查看>>
前端面试之关于HTTP协议
查看>>
利用 Matplotlib 绘制数据图形(二)
查看>>
iOS概念攻坚之路(二):Runtime
查看>>
关于前端请求发送时间时而长时而短问题(stalled a lot)
查看>>
Python 工匠:编写条件分支代码的技巧
查看>>
记一次前端面试经历
查看>>
带你探索JUnit 5.4
查看>>
<暗时间> 时间, 不在于你拥有多少, 而在于你怎样使用
查看>>
Git的使用--如何将本地项目上传到Github
查看>>