我正试着和express.js & socket.io聊天。目前,我聊天中的用户可以在同一个浏览器上打开多个选项卡,也可以在所有这些选项卡上聊天。这意味着同一个客户可以同时与几个人聊天。我想阻止这种行为。
我想防止客户端每次连接到聊天时:
1)客户端在同一浏览器上在不同的选项卡上工作
2)客户端打开不同的浏览器并在它们上工作
我怎么能这么做?谢谢!
发布于 2016-07-12 22:53:44
通过使用cookie标识特定的浏览器,您可以从同一浏览器中的不同选项卡中检测到同一个用户。在第一次连接( socket.io或表示请求)时,设置唯一cookie标识符,然后在后续连接上检查该唯一cookie标识符是否已经在使用。您必须在您的特定应用程序中定义“在使用”是什么意思。对于socket.io连接,这有点简单,因为这意味着当前已经有一个活动连接。对于Express请求,这有点困难,因为请求是暂时的,所以您必须决定如何区分不同选项卡与导航到新页面的一个选项卡(这是应用程序特定的操作方式)。
要检测多个浏览器,您必须进行用户身份验证,或者假设用户不创建多个帐户,或者有某种系统来防止同一用户创建多个帐户。然后,在cookie中使用帐户身份验证凭据,就像在前面的示例中一样,以判断是否已经使用了该用户的会话。
https://stackoverflow.com/questions/38339754
复制相似问题