电光石火-穿越时空电光石火-穿越时空


升级到spring security5遇到的坑-密码存储格式

遇到的问题 

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

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

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


本博客所有文章如无特别注明均为原创。作者:似水的流年
版权所有:《电光石火-穿越时空》 => 升级到spring security5遇到的坑-密码存储格式
本文地址:http://www.ilkhome.cn/index.php/archives/390/
欢迎转载!复制或转载请以超链接形式注明,文章为 似水的流年 原创,并注明原文地址 升级到spring security5遇到的坑-密码存储格式,谢谢。

评论