javaxwebsocket使用路径参数提交登录数据,好的做法?

javaxwebsocket使用路径参数提交登录数据,好的做法?,java,login,websocket,Java,Login,Websocket,我正在开发一个带有java后端的简单聊天应用程序。为了验证我的用户,我将用户名和散列密码存储在数据库中,以便稍后与传入的密码进行比较。我现在的问题是如何提交用户登录数据,这里的最佳实践是什么?此时,当连接到websocket服务器时,我通过将用户名和密码添加为路径参数来传输它们。这是实现我目标的好方法还是有更好的方法 这实际上取决于很多事情。如果您的应用程序也支持HTTP请求,那么我建议您使用HTTP身份验证方法并在cookie中存储会话id。WebSocket能够向服务器发送cookie。这是

我正在开发一个带有java后端的简单聊天应用程序。为了验证我的用户,我将用户名和散列密码存储在数据库中,以便稍后与传入的密码进行比较。我现在的问题是如何提交用户登录数据,这里的最佳实践是什么?此时,当连接到websocket服务器时,我通过将用户名和密码添加为路径参数来传输它们。这是实现我目标的好方法还是有更好的方法

这实际上取决于很多事情。如果您的应用程序也支持HTTP请求,那么我建议您使用HTTP身份验证方法并在cookie中存储会话id。WebSocket能够向服务器发送cookie。这是最干净的方法之一

或者,您可以开发应用程序,强制用户在发送第一条消息时输入用户名和密码,然后验证这些凭据并授权用户,如果出现异常,则关闭websocket(不是最佳做法)

我们在应用程序中使用的另一种方法并不常见,但我们还是这样做了,而且对我们来说效果很好,就是在不同的服务器上验证我们的用户,并给他们一个
令牌。由于我们的websocket服务器与身份验证服务器是分开的,并且我们没有使用有效的SSO(单点登录)方法,所以cookie不是一个好的解决方案(Web浏览器不向地址为a的服务器提供地址为B的cookie)。因此,我们制定了自己的协议,在其中添加了身份验证服务器提供的
令牌
,并将其发送到服务器。然后,websocket服务器使用身份验证服务器检查并验证令牌