我正在开发Spring启动应用程序。前面的Thymeleaf也被使用。现在我正在努力改变用户名(电子邮件)。通过电子邮件确认后,我在控制器中返回“redirect:/ logout”。我想添加一条消息,指出电子邮件已更改,用户必须使用新用户名(邮件)再次登录。
这是我对Spring Security的配置:
.logout()
.logoutUrl("/logout")
.logoutSuccessUrl("/login")
和控制器片段:
@RequestMapping(value = "/confirmmail/{hash}", method = RequestMethod.GET)
public String confirmMail(@PathVariable String hash,
RedirectAttributes redirectAttributes,
Model model) {
Optional<User> userOptional = userService.getUserByConfirmChangeEmailHash(hash);
if(userOptional.isPresent()){
User user = userOptional.get();
user.setEmail(user.getTemporaryEmail());
user.setTemporaryEmail(null);
userService.save(user);
redirectAttributes.addFlashAttribute("logoutMessage",messageService.getMessage("user.profile.email.changed.success"));
// redirectAttributes.addAttribute("message",messageService.getMessage("user.profile.email.changed.success"));
// model.addAttribute("logoutMessage",messageService.getMessage("user.profile.email.changed.success"));
return "redirect:/logout";
}else{
model.addAttribute("message",messageService.getMessage("user.profile.email.changed.failed"));
}
return "/user/index";
}
正如您所看到的,我尝试使用RedirectAttributes,flash atributes,并简单地进行建模。 不幸的是,在重定向到登录页面后,我的模型中的数据不存在。
我该如何解决这个问题?