识别用户的问题,无需登录即可构建聊天应用

时间:2019-06-13 10:42:46

标签: cookies jwt chatbot software-design

我想构建一个无需任何登录的应用内聊天应用程序。
因此,用户与程序(后端)通信,而不与其他用户通信。所以,这是一个聊天机器人。
我的问题是:如何识别用户?我应该只记录IP地址吗?还是应该在服务器上生成一个随机ID?还是我应该在客户端上生成它?

1 个答案:

答案 0 :(得分:0)

据我了解,识别用户的目的是让服务器跟踪谁在发送聊天消息,并将响应发送回适当的客户端(用户)。由于多种原因,IP地址不能可靠地用作唯一标识用户的方式(这是一个单独的主题)。一个例子是-一家小公司通过具有单个IP地址的单个路由器路由来自其办公网络的所有传出流量。在这种情况下,来自该公司不同员工的请求将具有聊天服务器检测到的相同IP地址。因此,无法区分这些用户。

在服务器上为每个用户生成唯一标识符的想法是可行的。当用户第一次发起聊天时,可以使用UUID或JWT或类似的东西生成ID。此ID需要传递回客户端,以便客户端(用户)可以使用相同的ID发送后续的聊天消息。因此,在此模型中,客户端将需要有一个存储该ID的位置,以便它可以将其ID保持在其聊天消息中传递回服务器。现在,当客户端丢失此ID时,可能会发生问题。我们如何从这种情况中恢复过来?答案将类似于有人丢失密码时使用的方法。有几种恢复机制,例如在受信任的电子邮件地址上发送重置链接,或者以代码的形式在用户的手机上发送重置链接,或者生成与ID不同的恢复密钥,然后将其通过电子邮件发送给用户,以便以后用于重置ID。基本上,如果ID丢失,应该有另一种安全的方式(恢复流程)来识别用户。

如果ID是在客户端生成的,那么只要所有客户端都能够生成保证唯一的ID,这也可以工作。客户端可以将生成的ID传递给服务器,服务器可以检查它是否已被使用,如果发现已被使用,则可以向客户端发送重试消息。或者,如果客户端使用的某些硬件具有唯一的序列号,并且该序列号可用于生成ID。

在任何一种情况下,所有请求都必须将ID传递给服务器,以便服务器可以进行标识。

希望这会有所帮助!

相关问题