会话ID cookie在gwt rpc中

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

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

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

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

在GWT中使用Servlet会话

在远程服务实现类中:

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

在客户端代码中:

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

Enabling_Sessions

AppEngine上-web.xml中

 true 

不,你不应该自己动手。

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

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

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

更新

鉴于您使用的是Google App Engine,您应该依赖引擎提供的会话管理function。 它似乎默认没有打开 。