【问题标题】:on socket.io do I always have to authenticate with each emit() instead of just when establishing connection?在 socket.io 上,我是否总是必须对每个 emit() 进行身份验证,而不仅仅是在建立连接时进行身份验证?
【发布时间】:2019-06-10 02:01:53
【问题描述】:

我从 REST 切换到 socket.io 的原因之一是因为后者是一种无状态通信,我发现自己如果必须为每次发出的这种膨胀添加大量令牌整个交流了很多。

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

那么,对于像 Grindr 这样的应用,最好的方法是使用 JWT 之类的每个 emmit 吗?通过护照?

干杯

【问题讨论】:

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

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


【解决方案1】:

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

请注意,虽然 JWT 肯定是一种标准,但使用这种方法,您不需要任何特定的令牌格式。您只需要某种唯一 ID 作为令牌,因此即使是 5 个字符的随机(但唯一!)令牌也应该没问题,不会在您的消息上留下太多多余的内容。

【讨论】:

    猜你喜欢
    • 2021-11-14
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-20
    • 1970-01-01
    相关资源
    最近更新 更多