我希望我的Web应用程序在重新启动浏览器时恢复其会话。所以我在cookie Filter中使用了以下代码来为除登录和注销之外的任何请求创建SESSION cookie。
HttpSession browserSession = httpRequest.getSession();
Cookie cookie = new Cookie("SESSION", browserSession.getId());
cookie.setMaxAge(Integer.MAX_VALUE);
httpResponse.addCookie(cookie);
如果我登录我的appl并重新启动浏览器并访问url,它会自动登录(如预期的那样)。但是,如果我在该会话中退出然后尝试登录该会话,则表示尚未登录。导致此问题的原因是什么?
当我从请求中获取cookie时(httpRequest.getCookies()),我得到2个带有SESSION名称的cookie,一个是浏览器创建的,一个是我的代码创建的,但是当两个都有相同的最大年龄时,即-1时我将我的cookie最大年龄设置为Integer.MaxValue()??为什么会发生这种情况
答案 0 :(得分:0)
您可以尝试在注销时删除coockie ,这样用户将通过登录时创建的coockie识别并且对会话有效(从登录到注销)并且最快如用户注销早期的coockie将被删除。