我们可以通过在文件 appengine-web.xml 中将 session-enabled 设置为 true 来启用会话。但是,GAE 实现的会话在关闭浏览器后并不持久。我的问题是如何保持会话持久化,以便可以实现“记住我”功能。有许多 Python 库,但我找不到任何适用于 Java 的库。非常感谢您的帮助!
问问题
2143 次
2 回答
4
执行此操作的常用方法是将唯一的随机密钥与您的用户相关联,将其存储在持久 cookie 中(使用Cookie.setMaxAge()
您希望此 cookie 保持有效的秒数),然后将此 cookie 发送给用户。
在 javadoc 中查找HttpServletResponse.addCookie
(向用户发送 cookie)和HttpServletRequest.getCookies()
(从客户端取回 cookie)。
于 2011-03-03T19:40:13.633 回答
1
由于我们无法将评论标记为答案(有些人可能会完全错过它),我将根据上面的 JB 指出具体的解决方案。使用 获取会话 ID this.getThreadLocalRequest().getSession().getId()
。JSESSIONID
与 Cookies.setCookie(...)一样将 sid 存储在 cookie 中
这会覆盖 GAE 创建的 cookie,保持相同的会话 ID,但应用您的到期时间。但是要小心你如何使用它,它很容易受到攻击(查找会话劫持和 XSS)。
于 2011-03-31T22:06:06.777 回答