我正在使用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);
}
}
但是我想尽可能地避免处理会话并将其留给容器。
还有其他选择吗?
jsessionid cookie由容器处理,因此我不建议您尝试重新调整它。相反,有关如何实现“记住我”功能的stackoverflow的大量信息:尝试here。