【发布时间】:2021-02-01 00:51:29
【问题描述】:
如何使用在每个套接字事件而不是每个连接上触发的身份验证中间件?
我想将它用于 react-node 应用程序中的会话管理。一旦用户登录并在我的数据库的会话表中创建一个新行,我将发送一个 JWT 令牌。但是在他登录后,我想通过使用提到的中间件检查他是否是每个后续事件的同一个人。前端客户端会通过cookies发送token。
我的登录和注销是通过 socket.io 而不是 HTTP。
【问题讨论】:
-
一旦连接,socket.io 连接唯一地属于一个特定的端点。连接 socket.io 连接时,该端点无法更改。因此,目前尚不清楚您认为需要对同一连接上的后续消息进行重新验证的原因或内容。无论如何,您将如何检查它是否是同一个人?使用 socket.io 得到的只是消息本身。除非客户端将它们放入消息中,否则没有其他身份验证凭据,在这种情况下,您可以编写自己的函数来检查消息中的数据。
-
实际上有一个 socket.io middleware 会在每条消息上触发。抛开这一点,你说的是正确的。问这个问题时,我并没有完全意识到这个概念。感谢您对重新验证进行解释的评论。
标签: node.js reactjs socket.io jwt middleware