首页 > 解决方案 > 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()?? 为什么会这样

标签: javahibernatespring-mvcsessioncookies

解决方案


您可以尝试在注销时删除 coockie,这样用户将通过登录时创建的 coockie 来识别,并且对于会话(从登录到注销)有效,并且一旦用户注销,早期的 coockie 将被删除。


推荐阅读