是否可以对不同的路由应用不同的 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);
但我想要针对不同的路线使用不同的过滤器。
这有可能吗?
最佳答案
是的,这是可能的。你可以这样做:
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
的格式正确。
关于node.js - 特定路由的 Express ip 过滤器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41604787/