故障原因:密码未做加密处理!
解决办法一:对密码进行加密处理。
在WebSecurityConfig进行如下配置(配置passwordEncoder同时配置用户名、密码):
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception{
auth.inMemoryAuthentication().passwordEncoder(new MyPasswordEncoder()).withUser("user").password("123").roles("USER");
auth.inMemoryAuthentication().passwordEncoder(new MyPasswordEncoder()).withUser("admin").password("123").roles("USER","ADMIN");
}
解决办法二:设置可以使用明文密码
1、使用UserDetailsService,用户名、密码配置在UserDetailsService,passwordEncoder配置在configure:
/**
* 引入多用户
*/
@Bean
public UserDetailsService userDetailsService(){
InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager();
manager.createUser(User.withUsername("user").password("123").roles("USER").build());
manager.createUser(User.withUsername("admin").password("123").roles("USER","ADMIN").build());
return manager;
}
@Autowired
private UserDetailsService userDetailsService;
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception{
auth.userDetailsService(userDetailsService).passwordEncoder(new MyPasswordEncoder());
}
2、MyPasswordEncoder定义:
import org.springframework.security.crypto.password.PasswordEncoder;
public class MyPasswordEncoder implements PasswordEncoder {
@Override
public String encode(CharSequence charSequence){
return charSequence.toString();
}
@Override
public boolean matches(CharSequence charSequence,String s){
return s.equals(charSequence.toString());
}
}