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 に答える