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"
而且页面毫无响应。

 

解决方法:

建立PasswordEncorder的实现类MyPasswordEncoder。css

代码一:java

 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 }
View Code

代码二:web

 

 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 }
View Code
相关文章
相关标签/搜索