Socket.io - 对会话管理的每个套接字事件进行身份验证
Socket.io - Authentication on every socket event for Session management
如何使用在每个套接字事件而不是每个连接上触发的身份验证中间件?
我想将其用于反应节点应用程序中的会话管理。一旦用户登录,我将发送一个 JWT 令牌,并在我的数据库中的会话 table 中创建一个新行。但是在他登录后,我想通过使用提到的中间件来检查他是否是每个后续事件的同一个人。前端客户端会通过cookies发送token。
我的登录和注销是通过 socket.io 而不是通过 HTTP 进行的。
连接后,socket.io 连接唯一地属于一个特定端点。在连接 socket.io 连接时,该端点无法更改。因此,与任何 TCP 连接一样,您通常会在 socket.io 连接首次连接时 authenticate/verify 连接,从那时起,您只需处理来自该特定客户端的传入消息,而无需额外验证。这通常是几乎所有使用 TCP 和身份验证的工作方式。 TCP 本身有保护措施,因此套接字不能轻易被另一个端点劫持 mid-connection.
因此,不清楚您认为需要对同一连接上的后续消息进行重新验证的原因或内容。
使用 socket.io,您在每条传入消息中得到的是消息本身。没有其他身份验证凭据,除非客户端将它们放入实际消息中,在这种情况下,您可以编写自己的函数来检查消息中的数据。
如果您在每封邮件中都添加了凭据,则可以使用 socket.use()
来处理每条传入邮件并检查邮件中您想要检查的内容。
如何使用在每个套接字事件而不是每个连接上触发的身份验证中间件?
我想将其用于反应节点应用程序中的会话管理。一旦用户登录,我将发送一个 JWT 令牌,并在我的数据库中的会话 table 中创建一个新行。但是在他登录后,我想通过使用提到的中间件来检查他是否是每个后续事件的同一个人。前端客户端会通过cookies发送token。
我的登录和注销是通过 socket.io 而不是通过 HTTP 进行的。
连接后,socket.io 连接唯一地属于一个特定端点。在连接 socket.io 连接时,该端点无法更改。因此,与任何 TCP 连接一样,您通常会在 socket.io 连接首次连接时 authenticate/verify 连接,从那时起,您只需处理来自该特定客户端的传入消息,而无需额外验证。这通常是几乎所有使用 TCP 和身份验证的工作方式。 TCP 本身有保护措施,因此套接字不能轻易被另一个端点劫持 mid-connection.
因此,不清楚您认为需要对同一连接上的后续消息进行重新验证的原因或内容。
使用 socket.io,您在每条传入消息中得到的是消息本身。没有其他身份验证凭据,除非客户端将它们放入实际消息中,在这种情况下,您可以编写自己的函数来检查消息中的数据。
如果您在每封邮件中都添加了凭据,则可以使用 socket.use()
来处理每条传入邮件并检查邮件中您想要检查的内容。