快递ipfilter的具体路线?

是否有可能应用不同的IPfilter不同的路线?

例如,我想只有123.123.123.123的人可以访问我的服务器/test路由,只有来自124.124.124.124的人可以访问我的服务器/路由。

我知道express-ipfilter可以通过IP地址来限制站点访问。 但是它不能将filter应用到特定的路由。

我也知道添加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); 

但我想要不同的路线不同的filter。

是否有可能做到这一点?

是的,这是可能的。 你可以做这样的事情:

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

您可能需要确保requestIP格式正确。

你可以链接中间件(而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); 

或者限定中间件的使用:

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

在你定义的应用程序的主文件中,

 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.