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

时间:2019-01-16 01:48:20

标签: node.js react-native socket.io jwt

我从REST切换到 socket.io 的原因之一是因为后者是一种无状态通信,我发现自己如果每次发射时都不得不添加很多令牌,这会让人感到肿整个交流很多。

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

因此,对于像 Grindr 这样的应用,可以说最好的方法是每次发射都像JWT这样?通过护照吗?

欢呼

1 个答案:

答案 0 :(得分:0)

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

请注意,尽管JWT当然是一种标准,但是使用这种方法,您不需要任何特定的令牌格式。您只需要某种唯一的ID作为令牌即可,因此即使是5个字符的随机(但唯一!)令牌也应该可以,这样就不会给邮件留下太多的膨胀。