只允许从node.js中的特定IP地址访问目录

问题描述:

我有一个简单的socket.io应用程序,我想保护正在向其他连接的套接字发送事件的目录。只允许从node.js中的特定IP地址访问目录

var io = require('socket.io'), 
     connect = require('connect'); 

var app = connect().use(connect.static('public')).listen(3000); 
var children = io.listen(app); 

Inside public directory我有用户可以访问的所有文件。 public/_app我有一个应用程序正在向其他连接的套接字发送事件。这个目录应该只能从我的IP地址访问。

谢谢。

插入静态中间件之前,您可以插入自定义的中间件:

var app = connect() 
      .use(function(req, res, next) { 
      if (req.url.indexOf('/_app/') === 0) // YOUR 'HIDDEN' PATH 
      { 
       var ipnumber = req.socket.address().address; 
       if (ipnumber !== '127.0.0.1')  // YOUR IP NUMBER 
       { 
       res.writeHead(404); 
       return res.end(); 
       } 
      } 
      next(); 
      }) 
      .use(connect.static('public')) 
      .listen(3000); 

这时候一个无效的IP号码试图访问你的管理应用程序生成的响应404 Not Found。当然,您也可以生成401 Unauthorized

+0

谢谢你,工作完美。 – fjckls