我想获取用户的IP或唯一的设备ID,以便我可以允许/禁止他根据他尝试的历史记录进行注册。
因此:访客访问我的应用。 这位嘉宾登记。 我想阻止他再次注册至少两天。 但我不知道怎么办,因为他是客人。
或者,客人要求进行短信验证。 我想让他每天只做5次。
我在Google搜索了大量关于如何获取用户IP的搜索,但它没有用,我没有成功找到他的IP - 似乎太复杂或无法访问。
我试图通过npm(GitHub repo)使用UUID插件,但这为所有访问者提供了相同的UUID(可能它给了服务器的UUID或者其他东西)。
我需要一种有效的方法来做到这一点。
感谢。
答案 0 :(得分:1)
我假设您正在使用express
框架。
在server.js文件中添加npm模块express-session
,如
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
}
})
);
express-session为您处理cookie管理。
有关详细信息,请在此处查看npm doc https://www.npmjs.com/package/express-sessions。
您可以从
等请求对象中获取用户的IP地址const clientIp = request.headers['x-forwarded-for'] || request.connection.remoteAddress;
但最有可能的客户端用户将使用动态IP。所以,我建议你使用express-session
npm模块,该模块使用cookie而不是ip地址跟踪用户