【发布时间】:2011-02-11 18:51:39
【问题描述】:
我正在实现一个使用会话的网络应用程序。我使用 GWT 和应用程序引擎作为我的客户端/服务器,但我认为他们所做的事情与我使用 PHP 和 apache 等所做的事情并没有什么不同。
当用户登录我的网络应用程序时,我正在使用 HttpSession 为他们启动会话。我得到这样的会话ID:
// From my login servlet:
getThreadLocalRequest().getSession(false).getId();
我将 sessionId 返回给客户端,然后他们将其存储在 cookie 中。我正在使用的教程将此 cookie 设置为在两周内“过期”:
Cookie.write("sid", theSessionId, 1000 * 60 * 60 * 24 * 14); // two weeks
这就是我感到困惑的地方:如果 cookie 在两周内过期,那么我的用户会愉快地继续使用 web 应用程序,只是有一天浏览到我的网站并显示一个登录屏幕。我有哪些选择?我可以不为这个cookie设置过期时间吗?这样用户就必须明确退出,否则他们可以永远使用该应用程序而无需重新登录?
或者有更好的方法吗?我不记得像 Twitter 这样的网站曾经要求我重新登录。我好像永久登录了。他们只是设置了没有过期吗?
webapp 没有保护任何类型的高度敏感数据,所以我不介意留下一个不会过期的 cookie,但似乎必须有更好的方法?
这是我参考的教程:
http://code.google.com/p/google-web-toolkit-incubator/wiki/LoginSecurityFAQ
谢谢
【问题讨论】:
-
通常情况下,我见过的很多网络应用程序都允许您勾选“让我保持登录”,这可以让您无限期地保持登录状态,或者在浏览器关闭后取消勾选。
标签: web-applications session gwt servlets