Socket.io - 对每个套接字事件进行身份验证以进行会话管理

Gow*_*ham 0 middleware node.js socket.io jwt reactjs

如何使用在每个套接字事件而不是每个连接上触发的身份验证中间件?

我想将其用于反应节点应用程序中的会话管理。用户登录后,我将发送 JWT 令牌,并在数据库的会话表中创建一个新行。但是在他登录后,我想通过使用提到的中间件检查他是否是同一个人,以应对以下每个事件。前端客户端会通过cookies发送token。

我的登录和注销工作是通过 socket.io 而不是通过 HTTP 进行的。

jfr*_*d00 5

连接后,socket.io 连接唯一地属于一个特定端点。当 socket.io 连接已连接时,该端点无法更改。因此,与任何 TCP 连接一样,您通常会在 socket.io 连接首次连接时对连接进行身份验证/验证,从那时起,您只需处理来自该特定客户端的传入消息,无需额外验证。这通常就是使用 TCP 和身份验证的所有内容的工作原理。TCP 本身具有保护功能,因此套接字不会轻易被另一个端点在连接过程中劫持。

因此,不清楚为什么或您认为需要对同一连接上的后续消息进行重新验证。

使用socket.io,您从每条传入消息中得到的就是消息本身。没有其他身份验证凭据,除非客户端将它们放入实际消息中,在这种情况下,您可以编写自己的函数来检查消息中的数据。

如果您将凭据放入每条消息中,则可以用来socket.use()处理每条传入消息并检查消息中您想要检查的任何内容。