错误信息:
There is no PasswordEncoder mapped for the id "null"。
错误原因:
spring security 版本在5.0后就要加个PasswordEncoder了
解决办法:
在安全配置类(即继承了WebSecurityConfigurerAdapter)里加上
@EnableWebSecurity//web安全
public class SecurityConfig extends WebSecurityConfigurerAdapter {
/**
* Spring Security 报There is no PasswordEncoder mapped for the id "null"
* spring security 版本在5.0后就要加个PasswordEncoder了
* @return
*/
@Bean
public static NoOpPasswordEncoder passwordEncoder() {
return (NoOpPasswordEncoder) NoOpPasswordEncoder.getInstance();
}
/**
* 自定义配置
*/
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/css/**","/js/**","/fonts/**","/index").permitAll()//都可以访问
.antMatchers("/users/**").hasRole("ADMIN")//需要相应的角色
.and()
.formLogin()//基于form表单登陆验证
.loginPage("/login").failureUrl("/login-error");//自定义登陆界面
}
/**
* 认证信息管理
* @param auth
* @throws Exception
*/
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication()//认证信息存储于内存中
.withUser("waylau").password("123456").roles("ADMIN");
}
}