GWT身份验证和用户信息访问

时间:2013-09-23 08:49:24

标签: java gwt

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

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

2 - ;假设用户名和密码准确,则在会话中保存验证令牌。访问servlet时将检查身份验证令牌。

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

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

由于

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

您无需向客户端发送用户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()您可以销毁会话,也可以在会话中store objects

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

答案 2 :(得分:0)

你引用了

  

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

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