我有一个节点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很陌生,所以如果有人对这个问题的解决方案有任何见解会非常有用
答案 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;
这可能会帮助您阻止特定的请求地址......