Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java GWT身份验证和用户信息访问_Java_Gwt - Fatal编程技术网

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

Java GWT身份验证和用户信息访问,java,gwt,Java,Gwt,只是想知道我下面的身份验证方法是否正确。有什么陷阱或遗漏什么吗?欢迎提出建议和讨论 1> 用户提供用户名和密码,并通过RPC发送到服务器。与存储在DB中的散列值进行比较 2> 假设用户名和密码准确,则会在会话中保存身份验证令牌。访问servlet时将检查auth令牌 3> RPC onSuccess将用户id(整数)返回给客户端。用户id保存在客户端的静态变量中 4> 每当需要特定于用户的信息时,都会将带有用户id(静态变量)的rpc调用发送到服务器进行数据库查询 谢谢你引用的 3> RPC o

只是想知道我下面的身份验证方法是否正确。有什么陷阱或遗漏什么吗?欢迎提出建议和讨论

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

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

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

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

谢谢你引用的

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


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

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

您不需要向客户端发送用户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.

中起作用,然后servlet将检查会话和会话中的令牌以验证数据访问。是的,就是这样。是的,你是对的。您可以通过这种方式识别会话。但是,我有一个关于访问mysql中的数据的问题。所有数据都有一列作为用户id。我需要通过此用户id查询相关数据。如何将会话id与用户id关联?可以将会话id映射到新表中的用户id。这也将保持会话id和用户id分开。另外,如果一个用户的用户id始终相同,我不建议将其存储在会话中。是的,这是一个更好的主意。因此,构建一个新表来关联sessionId(变量)和用户id(常量)。但是,由于访问servlet时会再次检查会话,因此在客户端将userId作为静态变量存在任何陷阱吗?当用户id存储在客户端时,您会看到什么好处?另外,如果用户按f5,静态变量将被重置