【问题标题】:Dynamically set session cookie max age动态设置会话 cookie 最大年龄
【发布时间】:2015-09-10 08:21:58
【问题描述】:

我正在使用 Jetty 的会话管理,并希望使用“记住我”选项实现简单的登录。

因此,如果用户不想被记住,我希望 JSESSIONID cookie 一直存在,直到浏览器会话关闭。如果用户选择被记住,则 cookie 将在 30 天内过期。

我正在使用SessionCookieConfig 在启动时配置 cookie 详细信息,我无法根据请求更改它。

那么有没有办法动态更改每个登录请求的最大年龄? 我能看到的唯一方法是从请求中获取 cookie,然后更改最大年龄:

//in LoginServlet
doPost(HttpServletRequest request, HttpServletResponse response) {
    //... Get remember me option from request
    request.getCookies();
    //... Find cookie in array by name JSESSIONID
    if (rememberMe) {
        sessionCookie.setMaxAge(60 * 60 * 24 * 30);
    } else {
        sessionCookie.setMaxAge(-1);
    }
}

但是我想尽可能避免处理会话并将其留给容器。

还有其他选择吗?

【问题讨论】:

    标签: session servlets cookies jetty servlet-3.0


    【解决方案1】:

    jsessionid cookie 由容器处理,因此我不建议您尝试重新使用它。相反,stackoverflow 上有大量关于如何实现“记住我”功能的信息:试试here

    【讨论】:

    • 请将您的第一个链接编辑为有用的内容或将其删除。
    • 我删除了有问题的链接。下次您看到类似内容时,请标记该帖子以引起版主注意。
    猜你喜欢
    • 2020-01-12
    • 1970-01-01
    • 2014-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-03
    • 1970-01-01
    相关资源
    最近更新 更多