gpt4 book ai didi

java - Java Spring 在无效的 HttpSession 上返回错误

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

我当前正在运行一个使用 java Spring 来处理 session 的应用程序。我有以下代码,它为我处理所有 session 。

    @RequestMapping(value = "/login", method = GET)
public @ResponseBody
UserCredentials startLoginProcess(HttpSession session)
{
//initiate session if none exists
}

@RequestMapping(value = "/login", method = POST)
@ResponseStatus(value = HttpStatus.OK)
public void login(@RequestBody UserCredentials user, HttpSession session)
{
//do login stuff
}

@RequestMapping(value = "/logout", method = GET)
@ResponseStatus(value = HttpStatus.OK)
public void logout(HttpSession session)
{
session.invalidate();
}

这里的关键是调用invalidate()的注销。这应该将 session 标记为无效。但是,当使用同一 session 在无效后进行调用时,服务器会发送带有 200 OK 和新的 set-cookie header 的响应。相反,我希望抛出一个错误,例如 403 或其他错误来表明 cookie 现在无效。我可以通过哪些方法来做到这一点?

更具体一点,我希望登录 GET 调用能够处理创建新 session (如果不存在),但如果 session 无效,所有其他调用都应该抛出某种类型的错误。显然 HttpSession 上没有 isInvalid 方法。

最佳答案

这就是你所需要的。当您将其标记为 sessionStatus.setComplete(); spring 会为您删除所有内容。

@Controller
@RequestMapping(value = "/logout")
@SessionAttributes({"someSession"})
public class OutYouGo {
@RequestMapping(method = RequestMethod.GET)
public String logout(
@ModelAttribute SomeSession someSession,
SessionStatus sessionStatus) {

sessionStatus.setComplete();
return SIGN_OFF_PAGE_LINK;
}
}

关于java - Java Spring 在无效的 HttpSession 上返回错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22624931/

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