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

节点/ Express-IP限制对路由的访问,但不限制对静态文件的访问

如何解决《节点/Express-IP限制对路由的访问,但不限制对静态文件的访问》经验,为你挑选了1个好方法。

在我的MEAN应用中,我有一个API和静态Web文件,例如index.htmllogin.html

//Routes
app.use('/mysuperapi', require('./routes/api'));

//For static files
app.use(express.static('site'));

如果我不希望用户能够mysite.com/mysuperapi自由访问URL,例如,我想知道是否有可能?

login.html在用户机器中会出现在API中调用身份验证路由的页面,因此我无法将所有期望服务器使用的IP完全列入白名单。

还是所有API都是公开的?

任何建议表示赞赏。

谢谢。



1> ruedamanuel..:

您可以通过添加另一个中间件层来限制对路由的访问,例如

app.use('/mysuperapi/*', function(req, res, next) {
    // do your filtering here, call a `res` method if you want to stop progress or call `next` to proceed
    var ip = req.ip || 
             req.headers['x-forwarded-for'] || 
             req.connection.remoteAddress || 
             req.socket.remoteAddress ||
             req.connection.socket.remoteAddress;

     // Your allowed ip. You can also check against an array
     if (ip == '5.4.3.2') {
       next();
     } else {
        res.end();
     }
}

app.use('/mysuperapi', require('./routes/api'));

// ... the rest of your code

在与模式匹配的所有路径以及到达API之前,都会调用第一个app.use语句上的函数,因此您可以在此处限制访问。

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