我正在使用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进行空检查。

09-25 22:22