如何在nodejs中使用bearer token实现socket.io认证

时间:2015-08-22 10:17:52

标签: node.js mongodb socket.io-1.0

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

1 个答案:

答案 0 :(得分:1)

您可以为套接字连接设置“授权”。客户端通过握手数据的查询参数发送身份验证令牌。然后我使用socketAuth方法进行验证。看看下面的代码示例,让我知道它是否有帮助

<!-- put options here -->
<mongo:mongo-client id="mongo" … />

<mongo:db-factory id="db-factory" mongo-ref="mongo" />

<!-- put your domain package here -->
<mongo:mapping-converter id="converter" base-package="…" />

<bean class="….MongoTemplate">
   <constructor-arg ref="db-factory" />
   <constructor-arg ref="converter" />
</bean>

<mongo:auditing …/>

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

    /**
         * 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);
            }
        });
    }