假设我正在编写自己的会话代码,那么在java中生成唯一且安全的会话ID cookie的正确方法是什么。
我不应该自己动手,而是使用已经标准化的东西吗?
我正在使用gwt和谷歌应用引擎平台。
如何在浏览器/服务器重启时保持会话持续存在?
答案 0 :(得分:24)
在远程服务实现类中:
String jSessionId=this.getThreadLocalRequest().getSession().getId();
在客户端代码中:
String jSessionId=Cookies.getCookie("JSESSIONID");
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