如何实现socket.在nodejs中使用承载令牌进行IO身份验证



如何验证传入的连接,如何创建私有名称空间,在向客户端发送任何事件之前,如何验证每个套接字的客户端角色

您可以在套接字连接中设置"授权",客户端通过握手数据的查询参数发送验证令牌。然后使用socketAuth方法对其进行验证。看看下面的代码示例,告诉我它是否有帮助

/**
 * Check authorization Here
 */
ioSocket.set('authorization', function (handshakeData, callback) {
    console.log("Inside Auth Handshake");
    console.log(handshakeData._query);
    if (handshakeData._query && handshakeData._query.token) {
        var token = handshakeData._query.token;
        socketAuth(token, function (err, res) {
            if (err) {
                console.log(err);
                console.log("** Socket Authentication Done :" + false);
                return callback(null, false);
            } else {
                console.log(" *** Socket Authentication Done :" + res);
                return callback(null, res);
            }
        });
    } else {
        console.log("*Socket Authentication connection: false , Done :" + false);
        return callback(null, false);
    }
});
socketAuth = function (token, callback) {
    verifyToken(token, function (err, res) {  // method to get the user of this token from the DB and validate the connection.
        if (err) {
            return callback(true, false);
        } else {
            return callback(null, res);
        }
    });
}

客户端如何使用认证令牌连接到套接字的示例。

var socket = require('socket.io-client')('<SERVER IP>/?token=9a05f8279436549875d1c2cd');
socket.on('connect', function () { console.log("socket connected"); });
socket.emit('event_name',{"message":"hello"});

最新更新