Socket.io和身份验证系统

时间:2017-06-28 15:11:54

标签: javascript node.js cookies socket.io

我有以下代码:

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

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

    })
});

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

根据这个帖子: Can I access a cookie from Socket.io?

socket.request.headers.cookie
尽管我并不理解为什么,但是很高兴。为什么socket.io会将他的cookie与其他人的实时制作混淆?我错过了什么?我怎么能做到这一点?

1 个答案:

答案 0 :(得分:0)

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

假设您已经过身份验证,服务器会向您发送一个令牌

客户方:

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/

希望它能以某种方式帮助你。