这里写自定义目录标题
使用BCryptPasswordEncoder()加密,Console 出现 Warning:Encoded password does not look like BCrypt
问题描述
// An highlighted block
@Autowired
MyUserDetailsService myUserDetailsService;
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
@Override
public void configure(AuthenticationManagerBuilder auth) throws Exception {
auth
.userDetailsService(myUserDetailsService).passwordEncoder(passwordEncoder());
}
数据库密码加密不是BCrypt。或者没有加密。
解决办法
在UserDetialsSevice 实现类 LoadUserByUsername method里将返回的User的Password加密
public class MyUserDetailsService implements UserDetailsService {
@Autowired
private UsersRepository usersRepository;
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
users user = usersRepository.findByUsername(username);
if(user==null){
throw new UsernameNotFoundException("User does not exist");
}
return new User(username,new BCryptPasswordEncoder().encode(user.getPassword()), AuthorityUtils.commaSeparatedStringToAuthorityList("admin"));
}
}