当前位置:  开发笔记 > 编程语言 > 正文

针对特定路线的Express ip过滤器?

如何解决《针对特定路线的Expressip过滤器?》经验,为你挑选了1个好方法。

是否可以将不同的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);

但我想为不同的路线使用不同的过滤器.

是否有可能做到这一点?



1> bsyk..:

警告:包express-ipfilter现已弃用.

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

推荐阅读
k78283381
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有