我想获取用户的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 地址跟踪用户