node.js+;socket.io立即授权
是否可以在连接套接字后立即运行身份验证? 现在我这样做:node.js+;socket.io立即授权,node.js,socket.io,Node.js,Socket.io,是否可以在连接套接字后立即运行身份验证? 现在我这样做: io.sockets.on('connection', function (socket) { socket.on('login', function (token) { // this is where I currently authtificate users }); }); 若我在这种情况下并没有错的话,套接字在“连接”时打开并挂起,并且“登录”事件可能永远不会被调用。如果有人想攻击我的服务器,他们可以简
io.sockets.on('connection', function (socket) {
socket.on('login', function (token) {
// this is where I currently authtificate users
});
});
若我在这种情况下并没有错的话,套接字在“连接”时打开并挂起,并且“登录”事件可能永远不会被调用。如果有人想攻击我的服务器,他们可以简单地打开数千个套接字连接。我是说,我该如何认证“连接”呢?所以,如果它失败了,我将能够立即关闭插座
谢谢大家! 当客户端尝试连接时,可以运行身份验证。Socket.io有一种机制,可以在客户端尝试连接到服务器时对其进行授权,但是默认情况下,授权被禁用。当套接字尝试连接到服务器时,存在一个
handshake
对象,该对象具有请求查询和请求头等。您可以通过以下方式强制授权:
io.configure(function (){
io.set('authorization', function (handshakeData, callback) {
if(handshakeData.query.token == "somevalue"){
callback(null, true); // this will allow the client to connect
}else{
callback(null, false); // this will prevent the client from connecting
}
});
});
在客户端,您可以发送如下查询字符串:
var socket = io.connect("http://yourIP:Port?token=somevalue");
认证是什么意思?