Node.js 如何关闭与已未经身份验证的用户的套接字连接?

Node.js 如何关闭与已未经身份验证的用户的套接字连接?,node.js,websocket,socket.io,Node.js,Websocket,Socket.io,有一个系统,用户可以登录,然后进行聊天。 当用户正在进行身份验证时,身份验证标识符将保存到会话,会话将保存到Redis。 基于会话值(auth identificator)的后端(PHP)用户状态(已验证或否) 此外,系统还具有基于nodejs和sockets.io的聊天功能。 有两种用户类型Admin和user,它们可以相互聊天。 当用户/管理员连接到聊天室或在聊天室中写入消息时,nodejs会获取标题,其中包含cookie,nodejs从这些设备中获取会话ID,并检查该会话是否在Redis中

有一个系统,用户可以登录,然后进行聊天。 当用户正在进行身份验证时,身份验证标识符将保存到会话,会话将保存到Redis。 基于会话值(auth identificator)的后端(PHP)用户状态(已验证或否)

此外,系统还具有基于nodejs和sockets.io的聊天功能。 有两种用户类型Admin和user,它们可以相互聊天。 当用户/管理员连接到聊天室或在聊天室中写入消息时,nodejs会获取标题,其中包含cookie,nodejs从这些设备中获取会话ID,并检查该会话是否在Redis中显示,是否具有身份验证标识符-我们知道用户已通过身份验证,可以连接到房间,或者我们可以将其消息保存到DB。然后将接收到的消息广播给连接到房间的用户

问题是: 1-打开浏览器,由管理员在系统中进行身份验证,并打开聊天室 2-对用户执行相同的操作 然后这些可以相互通信

但当用户打开第一个带有聊天功能的浏览器选项卡,在第二个选项卡上注销时,此时管理员将编写消息,已经注销的用户将继续接收消息

所以,问题是:我们如何才能关闭与用户的套接字连接? 如果用户单击“注销”按钮,那么我们可以通过Redis发布/订阅频道从PHP向nodejs发送消息,nodejs将关闭连接,一切正常

但当用户打开第二个浏览器选项卡,然后清理浏览器cookies时,他将立即得到未经验证的验证,但在第一个选项卡上,他继续接收消息。管理员也是如此。 我们如何预防它

谢谢