Spring Security - 使用我自己的消息注销

时间:2016-02-19 13:15:06

标签: spring spring-mvc spring-security spring-boot

我正在开发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,并简单地进行建模。 不幸的是,在重定向到登录页面后,我的模型中的数据不存在。

我该如何解决这个问题?

0 个答案:

没有答案