【发布时间】:2012-02-05 13:07:12
【问题描述】:
我有一个 GWT 应用程序,它的后端有 RPC 服务。我目前正在尝试实现用户支持,唯一仍然存在的问题是我应该存储会话数据的方式。
我正在使用
存储会话 IDgetThreadLocalRequest().getSession().setAttribute("sid", "randomSIDgoeshere");
所以,第一个问题更多是针对 Java servlet 而不是针对 GWT。这段代码是否保证下次我这样打电话:
getThreadLocalRequest().getSession().getAttribute("sid");
它要么是空的(如果它被调用的用户还没有访问过设置了 SID 属性的代码段)或者它会与我已经为那个用户保存的 SID 完全相同。换句话说,这两段代码是用户特定的吗? (用户我的意思是单台计算机上的单个浏览器)
第二个问题是关于存储 SID 和一些额外数据(如用户 ID)之间的映射。如果我有这样的代码:
public class MyGwtServiceImpl extends RemoteServiceServlet implements MyGwtService {
// SID to User ID mappings
private final Map<String, String> sessions =
new HashMap<String, String>();
...
}
是否保证sessions 对于所有请求始终是同一个对象,并且除非整个应用程序终止,否则其数据将保持“活动”状态? (例如,Tomcat 已停止)这是正常方法还是我应该将所有这些映射保留在我的数据库中?
【问题讨论】:
标签: java security session gwt servlets