gpt4 book ai didi

javascript - Socket.io和认证系统

转载 作者:太空宇宙 更新时间:2023-11-04 02:04:32 25 4
gpt4 key购买 nike

我有以下代码:

io.sockets.on('connection', function (socket) {

socket.on('queue', function() {
console.log(socket.request.headers.cookie);

})
});

现在我的网站注册是通过express完成的,并且https cookie通过express添加到客户端的浏览器中。当有人想要连接到我的游戏时,他需要发出“队列事件”。在那里,socket.io 将读取他的 cookie 并检查它们是否正确。

根据此线程: Can I access a cookie from Socket.io?

socket.request.headers.cookie

headers.cookie 是禁忌,尽管我不太明白为什么。为什么socket.io会在实时生产中将他的cookie与其他人的cookie混淆?我缺少什么?我怎样才能做到这一点?

最佳答案

如果您想使用 Socket.io 进行身份验证,最好的方法是使用握手。

假设您已经通过身份验证,并且服务器向您发回了 token

客户端:

let socket = io.connect(SERVER.socket, { query: 'token=' + token })
.on('connect', data => {
console.log('Connected to the server');
};

服务器端正在套接字连接上运行中间件:

const io = require('socket.io').listen(httpServer)

// Checking for the token and handshaking with the client
.use(require('socketio-jwt').authorize({
secret: secretKey,
handshake: true
}))

// Client successfully connected (token was valid)
.on('connection', socket => {});

一些很好的教程: https://auth0.com/blog/auth-with-socket-io/

希望它能对您有所帮助。

关于javascript - Socket.io和认证系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44806440/

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