【问题标题】:Restore Browser Session after Browser Restart (Duplicate Cookie issue)浏览器重启后恢复浏览器会话(重复 Cookie 问题)
【发布时间】:2018-10-25 12:34:03
【问题描述】:

我希望浏览器在重新启动浏览器后恢复我的 Web 应用程序会话。 我正在使用以下代码:

HttpSession browserSession = request.getSession();
Cookie cookie = new Cookie("SESSION", browserSession.getId());
cookie.setMaxAge(Integer.MAX_VALUE);
response.addCookie(cookie);

在我创建上述 SESSION cookie 之前,当我运行我的应用程序时,已经存在一个 SESSION cookie。

只有当我将其名称命名为“SESSION”时,浏览器会话才会恢复,如果我用其他名称命名它,则会创建 cookie,即使我重新启动浏览器但它仍然存在,但应用程序会话没有恢复。

最初我尝试获取并设置现有的“SESSION”cookie 值和最大年龄,但它不起作用。 如果我使用上面的代码,但有 2 个“SESSION”cookie,我可以恢复浏览器会话。 有什么方法可以只维护 1 个“SESSION”cookie? 还是我的方法不对?

【问题讨论】:

    标签: java hibernate spring-mvc session cookies


    【解决方案1】:

    你的方法是对的。不要担心重复的 cookie,因为浏览器会话会自动删除一个。而另一个(您已将年龄设置为Integer.MAX_VALUE)将保留在 cookie 数据库中。

    当你重启浏览器后再次访问该站点时,它只会有 1 个 SESSION cookie,服务器肯定会分配给定 id 的特定会话。

    在 Apache Tomcat 8.0 中测试

    【讨论】:

    • 感谢您的回复。但是有 2 个同名的 cookie 可以吗?以后会不会出问题?
    • 浏览器重启后只有一个cookie。
    • 如果我想删除我创建的 SESSION cookie,我如何识别,因为两者的名称相同?
    • 我想在用户注销时删除cookie。
    猜你喜欢
    • 2011-01-31
    • 2015-02-24
    • 2020-01-20
    • 2014-07-25
    • 2017-09-05
    • 2015-03-03
    • 2013-07-28
    • 2011-08-14
    相关资源
    最近更新 更多