在Node JS中按域地址阻止用户

时间:2017-03-13 11:32:46

标签: node.js

我有一个节点js应用程序

version -  v0.10.35.
Framework - hapi.js framework
Uses bower to manage front-end libraries

这有一组公共网址可供访问,每个网址都是针对客户的。当访问URL时,它将检查数据库并提供相关输出。

在我的情况下,有一位前客户,我不断要求他提供他的特定网址。我有发送请求的域名地址,类似于" www.ExampleForExCustomer.com"。有没有办法在Node js中使用此地址阻止用户?

用户在尝试访问时会收到错误消息,因为他不再是客户,但这是在为客户完成数据库检查后发生的,并且我试图避免该过程

由于某些复杂的原因,我无法通过网络级别的IP地址阻止用户。

我对Node js很陌生,所以如果有人对这个问题的解决方案有任何见解会非常有用

2 个答案:

答案 0 :(得分:0)

  

我有一个版本为v0.10.35

的节点js应用程序

该版本的维护期限于2016年结束。有Node v0.12,io.js v1.0,io.js v2.0,io.js v3.0,Node v4.0,Node v5.0 ,Node v6.0,Node v7.0,我们马上发布了Node v8.0。你是当前版本背后的8个主要版本,所以不要期望它可以工作。

话虽如此,您问题的答案将取决于您使用的框架。您可能正在使用Express,Connect,Hapi,Restify,Loopback,Koa,http,net或数百个其他模块 - 所有这些模块都有不同的方式来阻止请求。

您甚至没有包含任何类似的代码,因此我无法发布任何特定的解决方案。我可以给你一个正确的方向提示,这是最流行的框架,所以你最有可能使用它 - 但正如我所说,你提供的细节太少。

当您使用Express时,您应该创建一个中间件,在进行任何数据库连接之前,该中间件将在过程的早期检查请求。您将可以访问具有许多可以检查的有用属性的request对象。如果要阻止用户,则应运行next()回调并显示错误。为了实现连接,您应该运行next()回调而不会出现错误,以便其他中间件和请求处理程序可以处理它。

有关详细信息,请参阅此文章:

答案 1 :(得分:0)

正如@rsp已经说过的那样。您正在使用非常旧版本的节点...

使用hapi.js(或其他框架),您无法轻松确定请求者的URL。您可以做的是确定请求来自的ip

var ip = request.headers['x-forwarded-for'] || request.info.remoteAddress;

这可能会帮助您阻止特定的请求地址......