Node.js 在socket.io上,我是否总是必须对每个emit()进行身份验证,而不仅仅是在建立连接时?

Node.js 在socket.io上,我是否总是必须对每个emit()进行身份验证,而不仅仅是在建立连接时?,node.js,react-native,socket.io,jwt,Node.js,React Native,Socket.io,Jwt,我从REST切换到socket.io的原因之一是后者是一种无状态通信,我发现如果我必须为每个发射添加很多令牌,那么整个通信就会膨胀很多 这是socket.io聊天通信的主要安全标准吗 比如说对于像Grindr这样的应用程序,最好的方法是使用JWT这样的东西来处理每一个emmit?通过护照 干杯我处理它的方法是在登录时进行一次身份验证,并在服务器端创建一个身份验证令牌。在服务器上,我将令牌映射到用户详细信息,并仅将用户名附加到套接字对象。作为登录的响应,我只向客户端发送一次令牌。然后,您要验证用户

我从REST切换到socket.io的原因之一是后者是一种无状态通信,我发现如果我必须为每个发射添加很多令牌,那么整个通信就会膨胀很多

这是socket.io聊天通信的主要安全标准吗

比如说对于像Grindr这样的应用程序,最好的方法是使用JWT这样的东西来处理每一个emmit?通过护照


干杯

我处理它的方法是在登录时进行一次身份验证,并在服务器端创建一个身份验证令牌。在服务器上,我将令牌映射到用户详细信息,并仅将用户名附加到套接字对象。作为登录的响应,我只向客户端发送一次令牌。然后,您要验证用户身份的任何事件(读取:几乎所有事件)都会发送令牌,并根据令牌和连接到接收消息的套接字对象的用户名验证用户服务器端


注意,虽然JWT肯定是一种标准,但使用这种方法,您不需要任何特定的令牌格式。您只需要某种类型的唯一ID作为令牌,因此即使是5个字符的随机(但唯一!)令牌也可以,不会在消息上留下太多额外的膨胀。

RESTful应用程序是无状态的。Yes令牌通常最适合维护状态和身份验证