目前,我正在开发一个基于spring-mvc的Java应用程序。
此应用程序的功能之一是用户可以将其电子邮件地址更改为另一个电子邮件地址。
当用户更改电子邮件地址时,当前状态功能是通过相同的操作将用户注销,方法是返回
redirect:/j_spring_security_logout
从更新用户电子邮件地址的控制器方法开始。
新的webapp功能仅支持POST(不支持GET)进行登出,这导致当前因电子邮件地址更改而登出用户的功能中断。
解决此问题的建议方法是什么?
我可以:
a)以某种方式从服务器端发送POST以注销用户?
b)是否以某种方式注销用户服务器端(使会话无效,清除其cookie并将其重定向到登录页面?)?
c)无论如何,应该在更改电子邮件地址的状态下注销用户,还是这很奇怪?
任何建议都值得赞赏。
答案 0 :(得分:1)
将Spring Security与具有Servlet 3.0(或更高版本)的容器一起使用时,它与HttpServletRequest.logout
方法集成。调用此方法时,它将触发注册的Spring Security LogoutHandler
。之后,您可以重定向到所需的页面。
@RequestMapping
public String yourMethod(HttpServletRequest request) {
// your logic here
request.logout(); // Logout to force a re-login
return "redirect:/login"; // redirect to page you want
}