java - JAVA SESSION Cookie 问题
问题描述
我希望我的 Web 应用程序在重新启动浏览器时恢复其会话。因此,我在 cookie 过滤器中使用以下代码为登录和注销以外的任何请求创建 SESSION cookie。
HttpSession browserSession = httpRequest.getSession();
Cookie cookie = new Cookie("SESSION", browserSession.getId());
cookie.setMaxAge(Integer.MAX_VALUE);
httpResponse.addCookie(cookie);
如果我登录我的应用程序并重新启动浏览器并访问 url,它会自动登录(如预期的那样)。但是,如果我在该会话中注销然后尝试在该会话中登录,它不会登录。是什么导致了这个问题?
当我从请求(httpRequest.getCookies())中获取 cookie 时,我得到 2 个具有 SESSION 名称的 cookie,一个是浏览器创建的,一个是我的代码创建的,但是在调试时两者都具有相同的最大年龄,即 -1 当我设置我的cookie 最大年龄为 Integer.MaxValue()?? 为什么会这样
解决方案
您可以尝试在注销时删除 coockie,这样用户将通过登录时创建的 coockie 来识别,并且对于会话(从登录到注销)有效,并且一旦用户注销,早期的 coockie 将被删除。
推荐阅读
- python-3.x - 即使用户输入是小写字母或大写字母,我也想删除该元素
- java - Java 和我需要帮助来理解要写出的代码
- c++ - 编译器如何将链表中的地址串在一起?
- json - 重复对象的 JSON 模式数组
- c# - Selenium C# 标签文本单击
- python - 不显示添加到 networkx 图的一个节点的图像
- java - Java 8 - 将轻元素从另一个 Map 放入目标 Map
- r - 使用 Xaringan 时 custom.css 消失
- f# - F# 类成员中的 ref 和 byref<> 参数
- python-3.x - 如何使用 python-camelot 获取表格坐标?