我正在使用Spring的PasswordEncoder
创建和更新用户密码,但是,当我更新用户密码时,出现错误。
问题是当我创建一个新用户并使用他们的凭据登录时,它可以正常工作。另一方面,当我更新他们的密码(使用PasswordEncoder)时,尽管密码确实在数据库中确实在更新,但新密码会生成无效的用户名/密码错误。以下是更新密码的逻辑;
@PostMapping("/updatepassword")
public String updateUserPassword(UserEntity userEntity, Model model,
@RequestParam(name = "useridpass") Long userIdFromUpdatePass,
@RequestParam(required = false, name = "usernewpass") String newPass) {
userEntity = userRegisterRepository.findById(userIdFromUpdatePass);
userEntity.setUserpassword(passwordEncoder.encode(userEntity.getUserpassword()));
userRegisterRepository.save(userEntity);
return "redirect:/jobs";
}
最佳答案
您正在将值设置为实体中已哈希值的哈希,而不是请求中的值。具体来说,改变
userEntity.setUserpassword(passwordEncoder.encode(userEntity.getUserpassword()));
至
userEntity.setUserpassword(passwordEncoder.encode(newPass));
编辑添加您可能还想先对
newPass
进行空检查。