2

我们可以通过在文件 appengine-web.xml 中将 session-enabled 设置为 true 来启用会话。但是,GAE 实现的会话在关闭浏览器后并不持久。我的问题是如何保持会话持久化,以便可以实现“记住我”功能。有许多 Python 库,但我找不到任何适用于 Java 的库。非常感谢您的帮助!

4

2 回答 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 回答