快递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.