会话ID cookie在gwt rpc中

时间:2009-09-05 00:45:46

标签: java google-app-engine session cookies session-state

假设我正在编写自己的会话代码,那么在java中生成唯一且安全的会话ID cookie的正确方法是什么。

我不应该自己动手,而是使用已经标准化的东西吗?

我正在使用gwt和谷歌应用引擎平台。

如何在浏览器/服务器重启时保持会话持续存在?

3 个答案:

答案 0 :(得分:24)

Using Servlet Sessions in GWT

在远程服务实现类中:

String jSessionId=this.getThreadLocalRequest().getSession().getId();

在客户端代码中:

String jSessionId=Cookies.getCookie("JSESSIONID");

Enabling_Sessions

appengine-web.xml

<sessions-enabled>true</sessions-enabled>

答案 1 :(得分:2)

不,你不应该自己动手。

会话ID需要加密随机(不能从已知来源猜测)。你自己很难做到这一点。

答案 2 :(得分:1)

理想情况下,您应该依赖底层框架的会话管理功能。 Servlets&amp; JSP,Struts和Spring都有这种支持,您应该使用它。

在极少数情况下,您正在编写自己的框架而没有可依赖的基础会话管理功能,您可以从java.security.SecureRandom类开始。当然,不要在这里重新发明轮子,因为破坏的会话管理与破坏的身份验证相同。

<强>更新

鉴于您使用的是Google App Engine,您应该依赖引擎提供的会话管理功能。 It seems that it is not switched on by default