Node.js 找不到访问我的网络/应用程序的访客的唯一 ID



我想获取用户的IP或唯一的设备ID,以便我可以允许/禁止他根据他的尝试历史记录进行注册。

因此:来宾访问我的应用。此访客注册。我想再次阻止他注册至少两天。但我不知道该怎么做,因为他是客人。

或者,客人要求短信验证。我想让他每天只做5次。

我已经在Google中搜索了大量有关如何获取用户IP的搜索,但是它不起作用,也没有成功找到他的IP-似乎太复杂或无法访问。

我尝试使用 npm(GitHub 存储库(的 UUID 插件,但这为所有访问者提供了相同的 UUID(可能它提供了服务器的 UUID 或其他东西(。

我需要一种有效的方法来做到这一点。

谢谢。

我假设你正在使用express框架。

服务器中添加 npm 模块express-session.js文件,例如,

const express = require('express');
const session = require('express-session');
const app = express();
app.use(session({
    secret : 'yourSecretPassPhrase',
    resave: true,
    saveUninitialized: true,
    cookie : {
      maxAge : 1000 * 60 * 60 * 24 * 2 //for two days(in millisec)
    }
  })
);

此后,每个请求中都会插入一个会话对象!

app.get('/setUser', function(request, response){
        request.session.allowUser = true;      //creates user session
    })
);
app.get('/removeUser', function(request, response){
        del request.session.allowUser;      //deletes user session
    })
);
app.get('/checkUser', function(request, response){
        if(request.session.allowUser){
            //your code for existing or returning user
        }else{
            //your code for new user or session expired user
        }
    })
);

快速会话会为您管理 Cookie。

有关更多详细信息,请查看此处的npm文档 https://www.npmjs.com/package/express-sessions。

您可以从请求对象中获取用户的 IP 地址,例如

const clientIp = request.headers['x-forwarded-for'] || request.connection.remoteAddress;

但最有可能的是客户端用户将使用动态 IP。因此,我建议您使用 express-session npm 模块,该模块使用 cookie 而不是 IP 地址跟踪用户

最新更新