解决java.lang.IllegalArgumentException: There is no PasswordEncoder mapped for the id "null"

问题描述:

使用springboot,权限管理使用spring security,使用内存用户验证,但无响应报错:

java.lang.IllegalArgumentException: There is no PasswordEncoder mapped for the id "null"

解决方式

①:

创建MyPasswordEncoder类实现PasswordEncoder,加注解  @Component

@Component
public class MyPasswordEncoder implements PasswordEncoder {
    @Override
    public String encode(CharSequence charSequence) {
        return charSequence.toString();
    }

    @Override
    public boolean matches(CharSequence charSequence, String s) {
        return s.equals(charSequence.toString());
    }
}

 

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        //如果程序报错There is no PasswordEncoder mapped for the id "null",就将该段注释添加下边代码
        //或者在MyPasswordEncoder类上加一个@Component注解,使它成为一个Bean
        auth.inMemoryAuthentication().withUser("admin").password("123456").authorities("ADMIN_ADD","ADMIN_FIND");//自定义登录用户用户名和密码并赋予一些权限
    }

②:

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        

        //这个是使用了匿名内部类
        auth.inMemoryAuthentication().passwordEncoder(new MyPasswordEncoder()).withUser("lxy").password("lxy").authorities("ADMIN_ADD","ADMIN_FIND");
    }

 

posted @ 2020-02-14 08:43  thinkworld  阅读(1683)  评论(0编辑  收藏  举报