java.lang.IllegalArgumentException: There is no PasswordEncoder mapped for the id "null"报错
Posted glacial_water
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java.lang.IllegalArgumentException: There is no PasswordEncoder mapped for the id "null"报错相关的知识,希望对你有一定的参考价值。
出现问题的原因:
内存用户验证时,Spring boot 2.0.1引用的security 依赖是 spring security 5.X版本,此版本需要提供一个PasswordEncorder的实例,否则后台汇报错误:
java.lang.IllegalArgumentException: There is no PasswordEncoder mapped for the id "null"
并且页面毫无响应。
java.lang.IllegalArgumentException: There is no PasswordEncoder mapped for the id "null"
并且页面毫无响应。
解决方法:
创建PasswordEncorder的实现类MyPasswordEncoder。
代码一:
1 package com.mmall.demo; 2 3 import org.springframework.security.crypto.password.PasswordEncoder; 4 5 public class MyPasswordEncoder implements PasswordEncoder { 6 @Override 7 public String encode(CharSequence rawPassword) { 8 return rawPassword.toString(); 9 } 10 11 @Override 12 public boolean matches(CharSequence rawPassword, String encodedPassword) { 13 return encodedPassword.equals(rawPassword); 14 } 15 }
代码二:
1 package com.mmall.demo; 2 3 import org.springframework.context.annotation.Configuration; 4 import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; 5 import org.springframework.security.config.annotation.web.builders.HttpSecurity; 6 import org.springframework.security.config.annotation.web.builders.WebSecurity; 7 import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; 8 import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; 9 10 @Configuration 11 @EnableWebSecurity 12 public class SpringSecurityConfig extends WebSecurityConfigurerAdapter { 13 14 @Override 15 protected void configure(AuthenticationManagerBuilder auth) throws Exception { 16 auth.inMemoryAuthentication(). 17 passwordEncoder(new MyPasswordEncoder()). 18 withUser("admin").password("123456").roles("ADMIN"); 19 } 20 21 @Override 22 protected void configure(HttpSecurity http) throws Exception { 23 http.authorizeRequests() 24 .antMatchers("/").permitAll() 25 .anyRequest().authenticated() 26 .and() 27 .logout().permitAll() 28 .and() 29 .formLogin(); 30 http.csrf().disable(); 31 } 32 33 @Override 34 public void configure(WebSecurity web) throws Exception { 35 web.ignoring().antMatchers("/js/**","/css/**","/image/**"); 36 } 37 38 39 }
以上是关于java.lang.IllegalArgumentException: There is no PasswordEncoder mapped for the id "null"报错的主要内容,如果未能解决你的问题,请参考以下文章