java - 关闭浏览器后 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";
}
解决方案
使用 Cookie。Cookie 是存储在客户端的一小段数据,服务器在与客户端通信时使用它。
Cookie authCookie = new Cookie("AUTH", user.getUserName());
authCookie.setMaxAge(60*60);
response.addCookie(authCookie);
推荐阅读
- python-3.x - 仅在某些图表上缺少次要刻度
- amazon-web-services - 从 ASG 将实例定义到 ALB 中的目标组
- google-bigquery - BigQuery 1.2.0.1000 JDBC驱动打包了很多JAR文件
- python - 获取熊猫时间序列的时间跨度
- c++ - 如何在 C++ 中同步静态字段
- teamcity - 如何将选定的分支添加到 TeamCity 中的“我的分支”
- excel - Excel 无法识别特殊字母字符
- android - 如何在 OSMdroid 上可视化动态创建的路由?
- c++ - 按下按钮时将复制的文本添加到 lineEdit
- javascript - Firebase reCAPTCHA 验证程序无法在 Cordova iOS 应用程序上运行