gpt4 book ai didi

java - Spring Boot 如何在更新前检查来自 db 的编码密码是否与来自表单的密码匹配

转载 作者:行者123 更新时间:2023-12-01 12:25:52 25 4
gpt4 key购买 nike

我在我的更新方法中实现了一个方法,用于检查 UpdateForm 中给定的密码是否与来自 d​​b 的编码密码匹配。
我还没有找到任何教程或解决方案,但我尝试了一些东西,但没有任何效果。
这是我的更新方法

@RequestMapping(value = {"/home/editUser"}, method = RequestMethod.POST)
public String home(@ModelAttribute("editUser") User editUser, Model model) {
logger.info("/home/editUser");
try {
User user = userService.findById(editUser.getId());
if (!user.equals(editUser)) {
//old password matching
if (user.getPassword_1() == editUser.getPassword_1()) {
//encode new password
editUser.setPassword(PassEncoding.getInstance().passwordEncoder.encode(editUser.getPassword()));
//update
userService.update(editUser);
model.addAttribute("msg", "success");
}
else {
System.out.println("not match");
}
} else {
model.addAttribute("msg", "same");
}
} catch (Exception e) {
model.addAttribute("msg", "fail");
logger.error("editUser: " + e.getMessage());
}
model.addAttribute("home", editUser);
return "home";
}
Password_1是我的 oldpassword (actual) ,但我不知道如何实现密码编码器,它给出了

not match



预先感谢您的帮助:)

我刚试过
if(PassEncoding.getInstance().passwordEncoder.matches(editUser.getPassword_1(), user.getPassword_1()))

但它给

not match



它与
if(PassEncoding.getInstance().passwordEncoder.matches(editUser.getPassword_1(), user.getPassword()))

非常感谢 !

最佳答案

您可以使用 org.springframework.security.crypto.password.PasswordEncoder

@Autowired
private final PasswordEncoder passwordEncoder;
....
....
boolean result = passwordEncoder.matches(password_plan_text_here, encoded_password_here);

请参阅以下链接了解更多信息 https://docs.spring.io/spring-security/site/docs/4.2.4.RELEASE/apidocs/org/springframework/security/crypto/password/PasswordEncoder.html

您需要选择正确的编码器,如下所示。
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}

关于java - Spring Boot 如何在更新前检查来自 db 的编码密码是否与来自表单的密码匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53516952/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com