首页 > 解决方案 > 关闭浏览器后 HttpSession 发生变化

问题描述

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

这是我使用会话的简单代码:

@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";
}

我像这样将用户对象添加到会话中(为简单起见省略了验证):

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

标签: javaspringspring-bootspring-mvcsession

解决方案


使用 Cookie。Cookie 是存储在客户端的一小段数据,服务器在与客户端通信时使用它。

Cookie authCookie = new Cookie("AUTH", user.getUserName());
authCookie.setMaxAge(60*60);
response.addCookie(authCookie);

推荐阅读