2017-01-12 15 views
1

さまざまなIPフィルタを異なるルートに適用できますか。特定のルート用の高速IPフィルタ?

たとえば、123.123.123.123の人が私のサーバーの/testルートにアクセスでき、124.124.124.124人が私のサーバーの/ルートにアクセスできるようにします。

私はexpress-ipfilterがIPアドレスによるサイトアクセスを制限できることを知っています。ただし、特定のルートにフィルタを適用することはできません。

私はまた、ルートの途中でapp.use(ipfilter(ips, {}));を追加するだけで、以下のルートにフィルタを適用することができることを知っている:

var express = require('express'), 
    ipfilter = require('express-ipfilter').IpFilter; 

var ips = ['::ffff:127.0.0.1']; 
var app = express(); 

app.get('/test', function(req, res) { 
    res.send('test'); 
}); 

app.use(ipfilter(ips, {})); // the ipfilter only applies to the routes below 

app.get('/', function(req, res) { 
    res.send('Hello World'); 
}); 

app.listen(3000); 

しかし、私は別のルートの異なるフィルタをしたいです。

これは可能ですか?

答えて

-1

はい、可能です。あなたはrequestIPが正しくいえフォーマットされていることを確認する必要があるかもしれません

app.get('/test', function(req, res){ 
    var trustedIps = ['123.123.123.123']; 
    var requestIP = req.connection.remoteAddress; 
    if(trustedIps.indexOf(requestIP) >= 0) { 
     // do stuff 
    } else { 
     // handle unallowed ip 
    } 
}) 

:あなたのような何かを行うことができます。 uはアプリを定義し、あなたのメインのファイルで

+2

1あなたは、いくつかの上でそれを実装する必要がある場合でも、きれいな実施のためのミドルウェアの機能を書くことができますルート。 –

0

、あなたのルートファイル内

app.use('/test',require('./whereever-my-route-is-located-where /test routes ')); 
app.use('/',require('./wherever-my-this-routes-are-located')) 

var express = require('express'), 
    router = express.Router(); 
//Ip verification for all requests : for whereever-my-route-is-located-where /test routes 
router.use(function(req, res, next) { 
    //verify Ip Logic 
}); 
//this will be called for every route u define in that file, if it fails. 
2

ミドルウェア(およびipFilterはミドルウェア)をチェーンすることができます。

var express = require('express'), 
    ipfilter = require('express-ipfilter').IpFilter; 

var ips = ['::ffff:127.0.0.1']; 
var testers = ['1.2.3.4']; 
var app = express(); 

app.get('/test', ipfilter(testers, {mode: 'allow'}), function(req, res) { 
    res.send('test'); 
}); 


// the ipfilter only applies to the routes below 
app.get('/', ipfilter(ips, {mode: 'allow'}), function(req, res) { 
    res.send('Hello World'); 
}); 

app.listen(3000); 

やミドルウェアの使用を認定:これを行うには2通りの方法があります

var express = require('express'), 
    ipfilter = require('express-ipfilter').IpFilter; 

var ips = ['::ffff:127.0.0.1']; 
var testers = ['1.2.3.4']; 
var app = express(); 

app.use('/test', ipfilter(testers, {})); // the ipfilter only applies to the routes below  

app.get('/test', function(req, res) { 
    res.send('test'); 
}); 

app.use('/', ipfilter(ips, {})); // the ipfilter only applies to the routes below 

app.get('/', function(req, res) { 
    res.send('Hello World'); 
}); 

app.listen(3000); 
関連する問題