gpt4 book ai didi

java - 关闭浏览器后HttpSession发生变化

转载 作者:行者123 更新时间:2023-12-02 02:47:05 25 4
gpt4 key购买 nike

我正在空闲时间创建一个 Spring Boot 应用程序,目前我正在使用 session 来跟踪登录的用户。我遇到的问题是,每次我关闭浏览器并再次打开它时,我的 session 就会过期(ID 更改),并且我必须重新登录。

这是我使用 session 的简单代码:

@GetMapping("/explore")
public String explore(HttpSession session){
//This prints different results after closing the browser
System.out.println(session.getId());
if(session.getAttribute("user") != null) {
thisUser = (User) session.getAttribute("user");
}
return "explore";
}

我将用户对象添加到 session 中,如下所示(为简单起见,省略了验证):

@PostMapping("/login")
public String logging(User user, HttpSession session){
session.setAttribute("user", user);
return "redirect:/explore";
}

最佳答案

这符合指定的行为。 session cookie 没有期限,因此只要客户端打开网络浏览器实例,或者直到客户端在服务器端的 session 超时设置中指定的时间内没有访问该网站,它就会一直存在。

您基本上想要一个比 session cookie 生命周期更长的 cookie。您可以使用 Cookie API 创建一个新的长期存在的 cookie,使用 Cookie#setMaxAge() 设置其生命周期,使用 HttpServletResponse#addCookie() 将其添加到 HTTP 响应中。在后续的 HTTP 请求中,您可以使用 HttpServletRequest#getCookies() 确定 cookie 是否存在。

关于java - 关闭浏览器后HttpSession发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57136929/

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