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

然后一顿百度和google,其中看到两处有帮助的资料: 
https://www.cnblogs.com/majianming/p/7923604.html 
https://spring.io/blog/2017/11/01/spring-security-5-0-0-rc1-released

总的来说就是,人家把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

升级到spring security5遇到的坑-密码存储格式的更多相关文章

  1. Spring Cloud 升级最新 Finchley 版本,踩坑指南!

    https://blog.csdn.net/youanyyou/article/details/81530240 Spring Cloud 升级最新 Finchley 版本,踩了所有的坑! 2018年 ...

  2. spring cloud: 升级到spring boot 2.x/Finchley.RELEASE遇到的坑

    spring boot2.x已经出来好一阵了,而且spring cloud 的最新Release版本Finchley.RELEASE,默认集成的就是spring boot 2.x,这几天将一个旧项目尝 ...

  3. Spring Cloud Config采坑记

    1. Spring Cloud Config采坑记 1.1. 问题 在本地运行没问题,本地客户端服务能连上本地服务端服务,可一旦上线,发现本地连不上线上的服务 服务端添加security登录加密,客户 ...

  4. 从源码看Spring Security之采坑笔记(Spring Boot篇)

    一:唠嗑 鼓捣了两天的Spring Security,踩了不少坑.如果你在学Spring Security,恰好又是使用的Spring Boot,那么给我点个赞吧!这篇博客将会让你了解Spring S ...

  5. 记一次 Spring 事务配置踩坑记

    记一次 Spring 事务配置踩坑记 问题描述:(SpringBoot + MyBatisPlus) 业务逻辑伪代码如下.理论上,插入数据 t1 后,xxService.getXxx() 方法的查询条 ...

  6. CentOS 7下升级MySQL5.7.23的一个坑

    发现CentOS 7下升级MySQL5.7.23的一个坑,以前面升级到MySQL 5.7.23的一个集群为例 在我们环境下打开文件描述符个数的参数open_files_limit在MySQL 5.6. ...

  7. Spring boot应用踩坑集锦

    Spring boot应用踩坑集锦 spring boot是spring的一种开发套件,是spring cloud的基础框架,要学习spring cloud微服务是绕不开的,遇到一些踩坑问题在这里记录 ...

  8. Spring Cloud Gateway入坑记

    Spring Cloud Gateway入坑记 前提 最近在做老系统的重构,重构完成后新系统中需要引入一个网关服务,作为新系统和老系统接口的适配和代理.之前,很多网关应用使用的是Spring-Clou ...

  9. Spring Cloud Feign踩坑记录(二)

    注意,以下的Feign遇到的坑,在高版本中有些已经修复. 某些项目由于历史包袱原因,无法进行全面升级,才需要修补这些坑. 1.启动报错:not annotated with HTTP method t ...

随机推荐

  1. BZOJ_3550_[ONTAK2010]Vacation&&BZOJ_1283:_序列_网络流解线性规划

    BZOJ_3550_[ONTAK2010]Vacation&&BZOJ_1283:_序列_网络流解线性规划 Description 给出一个长度为 的正整数序列Ci,求一个子序列,使得 ...

  2. poj1733 Parity game[带权并查集or扩展域]

    地址 连通性判定问题.(具体参考lyd并查集专题该题的转化方法,反正我菜我没想出来).转化后就是一个经典的并查集问题了. 带权:要求两点奇偶性不同,即连边权为1,否则为0,压缩路径时不断异或,可以通过 ...

  3. 「NOIP2017」「LuoguP3952」 时间复杂度(模拟,栈

    题目描述 小明正在学习一种新的编程语言 A++,刚学会循环语句的他激动地写了好多程序并 给出了他自己算出的时间复杂度,可他的编程老师实在不想一个一个检查小明的程序, 于是你的机会来啦!下面请你编写程序 ...

  4. AtCoder Regular Contest 072 E:Alice in linear land

    题目传送门:https://arc072.contest.atcoder.jp/tasks/arc072_c 题目翻译 给你一个数组\(D\),然后给你一个操作序列\(d\),每次操作可以将\(D\) ...

  5. poj 1269 Intersecting Lines——叉积求直线交点坐标

    题目:http://poj.org/problem?id=1269 相关知识: 叉积求面积:https://www.cnblogs.com/xiexinxinlove/p/3708147.html什么 ...

  6. C++ ADO连接

    #include "stdafx.h" #include <iostream> #include <iomanip> #include "wind ...

  7. WPF DelegateCommand CanExecute

     private DelegateCommand searchCommand;         public DelegateCommand SearchCommand         {       ...

  8. 在visualstudio中使用Qt

    1.  说明 在此说明一下IDE跟封装的之间的关系,他们之间本质上来说没有关系,是可以多对对的关系. Qt开发是个比较泛的概念,Qt是由很多一系列类组成的整体,就像boost里面也有很多的类,而boo ...

  9. SpringBoot之导入导出Excel

    1.添加springBoot支持 <dependency> <groupId>org.apache.poi</groupId> <artifactId> ...

  10. idea+tomcat 解决 debug超级慢 问题

    最近在用intellij idea 开发程序,发现debug的时候启动得特别慢,正常run的时候启动的特别快,相差30多倍. 方法断点会戏剧性的降低debug的速度.当时并没有在意,因为并不清晰这个方 ...