如何验证传入连接, 如何创建私有命名空间, 在向客户端发出任何事件之前如何验证每个套接字的客户端角色
答案 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);
}
});
}