GWT身份validation和用户信息访问

只是想知道我的以下身份validation方法是否正确。 是否有任何陷阱或遗漏? 建议和讨论非常受欢迎。

1>用户提供用户名和密码,并通过RPC发送到服务器。 与存储在DB中的散列值进行比较。

2>假设用户名和密码准确无误,会话中将保存validation令牌。 访问servlet时将检查身份validation令牌。

3> RPC onSuccess将用户ID(整数)返回给客户端。 用户标识保存在客户端的静态变量中。

4>每当需要用户特定信息时,带有用户id(静态变量)的rpc调用将被发送到服务器以进行数据库查询。

谢谢

您最好将令牌返回给客户端,并validation令牌而不是用户ID。 如果使用用户ID,则用户A登录,然后另一个用户可以向服务器发送假装为用户A的请求。您的身份validation方法无法保护数据。

您无需向客户端发送用户ID。 服务器已经拥有了识别用户所需的所有信息。

此代码段创建了一个会话cookie, session.getId()可以获取它的内容,您应该保存该内容以识别用户:

 HttpServletRequest request = this.getThreadLocalRequest(); HttpSession session = request.getSession(true); 

然后,当用户调用您的服务器时,您只需回读会话ID。

 HttpServletRequest request = this.getThreadLocalRequest(); HttpSession session = request.getSession(false); 

使用session.invalidate()可以销毁会话,也可以在会话中存储对象 。

this.getThreadLocalRequest()仅适用于* Impl。

你引用了

3> RPC onSuccess将用户ID(整数)返回给客户端。 用户标识保存在客户端的静态变量中。

如果用户刷新其页面,则会重置存储在客户端静态字段中的值,对吗? 在那种情况下,会话结束? 系统会提示用户再次登录?