node.js - 特定路由的 Express ip 过滤器?

标签 node.js express ip access-control

是否可以对不同的路由应用不同的 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/

相关文章:

java - 用Java与本地网络之外的计算机连接

C - 使用 sin_addr 获取 IP 地址字符串

Android连接服务器ip和端口

node.js 为机器人聊天创建 'server side socket' (聊天脚本)

javascript - readme-md-generator 未从包 JSON 更新版本

node.js - 如何在应用程序路由中使用socket.io

javascript - 尝试通过 Express Node.js 提供 ejs 文件时出错

javascript - 为什么 node.js 会多次显示相同的内容?

javascript - 在创建之前不适用于我的 Sequelize 模型

node.js - Strongloop Oracle 通过脚本连接