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

 

解决方法:

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

代码二:

 

 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

 

以上是关于java.lang.IllegalArgumentException: There is no PasswordEncoder mapped for the id "null"报错的主要内容,如果未能解决你的问题,请参考以下文章

IllegalArgumentException:此 NavController 未知导航目的地 xxx