我正在使用Spring实现简单的Web应用程序,并且我试图实现重置密码机制。我决定这样做:
用户获得一个类似于site/reset_password?t=token
的电子邮件收件箱的链接,然后当他去那里(使用GET)时,他会看到他写新密码的表单。可悲的是,当用户想要提交新密码(使用POST)时,我遇到了一些问题。在POST方法中,我需要从他的链接中获取标记。
@RequestMapping(value = "/reset_password", method = RequestMethod.GET)
public String resetPassowrd(@RequestParam("t") String token, Model model) {
try {
ResetPasswordForm form = new ResetPasswordForm();
form.setResetPasswordToken(token);
model.addAttribute("resetPasswordForm", form);
model.addAttribute("tokenStatus",TokenStatus.OK);
} catch (WrongTokenException ex) {
model.addAttribute("tokenStatus",TokenStatus.WRONG);
}
return "token/reset_password.html";
}
我试图在表单对象中传递它(相同的对象用户填写他的密码),但在POST方法中,此字段设置为null。
@RequestMapping(value = "/reset_password", method = RequestMethod.POST)
public String resetPassowrd(@ModelAttribute @Validated ResetPasswordForm resetPasswordForm, BindingResult bindingResult, Model model) {
if (bindingResult.hasErrors()) {
return "token/reset_password.html";
}
userCompanyService.changePassword(resetPasswordForm);
return "token/reset_password_success.html";
}
在发现带有令牌的字段为空之后,我尝试将另一个参数添加到此方法@RequestParam(value = "t",required = false) String token
,遗憾的是它没有按照从GET到POST的请求传递。
我应该如何使它工作?我认为我将Thymeleaf和Spring一起使用的事实值得一提。
答案 0 :(得分:0)
添加$ids = array(1,434,23);
$query = "SELECT name, address FROM tContacts WHERE id IN('".join("','",$ids)."')";
$stmt = $DB->Prepare($query);
解决了这个问题。使用Spring将令牌参数传递给POST方法。