是否可以将不同的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);
但是我想为不同的路线选择不同的过滤器。
是否可以这样做?
答案 0 :(得分:5)
警告:包
return fetch(url,{ method: 'post', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }).then((res) => res.json());
现已弃用。
您可以链接中间件(而ipFilter是一个中间件)。有两种方法可以做到这一点:
express-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);
答案 1 :(得分:2)
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
格式正确。
答案 2 :(得分:0)
在你定义app的主文件中,
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.