1

我有一个简单的socket.io应用程序,我想保护向其他连接的套接字发送事件的目录。

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

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

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

谢谢。

4

1 回答 1

2

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

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);

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

于 2013-05-28T11:13:09.717 回答