解决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"); }