1、There is no PasswordEncoder mapped for the id “null“
先重写PasswordEncoder
public class CustomPasswordEncoder implements PasswordEncoder {
@Override
public String encode(CharSequence charSequence){
return charSequence.toString();
}
@Override
public boolean matches(CharSequence charSequence, String str){
return str.equals(charSequence.toString());
}
@Override
public boolean upgradeEncoding(String encodedPassword) {
return false;
}
}
实例化
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
//解决明文加密
@Bean
public PasswordEncoder passwordEncoder(){
return new CustomPasswordEncoder();
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
//使用userDetailsService 增加 对密码处理比对
auth
.userDetailsService(userDetailsService());
}
2、local class incompatible:stream classdesc serialVersionUID = 420, local class serialVersionUID = 510
造成问题的原因:
这个问题是由于spring-security-core版本升级造成的,项目使用springboot oauth2
老版本boot使用1.5,oauth是和boot对应的版本,生成的token信息存储在Redis中。当我boot升级为2.x的时候就报了上面的错误。
原因是之前的token中user对象的序列serialVersionUID = 420,在升级的版本中从token反序列化user时序列号对不上了。
处理办法:
将之前Redis中存储的信息清空一下



