gpt4 book ai didi

node.js - socketio-jwt 断开过期的 token

转载 作者:搜寻专家 更新时间:2023-10-31 22:33:53 24 4
gpt4 key购买 nike

我可以使用 socketio-jwt 进行身份验证,并且一切正常。我遇到的问题是,如果我将到期时间设置为最短时间并让它到期,我可以继续在连接上发送和接收消息。只要我不刷新页面,连接就会持续存在。刷新后连接断开,我需要重新连接。是否可以让服务器检查过期 token 并断开连接?

最佳答案

该库不支持此功能,您可以根据需要在每个套接字 io 事件上验证 token 。

Github Issue 中一位贡献者用这个类比回答:

id_token 就像你的国家护照,都是有有效期的,只要你的护照可以入境护照没有过期,大多数国家不会跟踪到期追捕你。

您可以使用 socketio 中间件手动处理此问题,例如:

const timer = require('long-timeout')

function middleware (socket, next) {
const decodedToken = socket.user // Assuming the decoded user is save on socket.user

if (!decodedToken.exp) {
return next()
}

const expiresIn = (decodedToken.exp - Date.now() / 1000) * 1000
const timeout = timer.setTimeout(() => socket.disconnect(true), expiresIn)

socket.on('disconnect', () => timer.clearTimeout(timeout))

return next()
}

关于node.js - socketio-jwt 断开过期的 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39418253/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com