谢谢,提前谢谢,所以我正在做一个项目,其中部分要求是有一个字段,用户可以在其中插入电子邮件,然后在他的电子邮件帐户上接收一个自定义 url,从那里他可以访问该站点。这就像“密码重置”的示例,其中生成自定义 url 并通过时间戳验证发送给您。我是 nodejs 的新手,我的问题是是否有人有某种类型的指南来开始这样做。我的想法是生成一个 sessionID,然后生成一个自定义 url,发送电子邮件,然后用户转到该网页。我正在使用 express,并且整个站点已经组装好,只是这个功能让我很生气! :(
最佳答案
我不确定您需要什么,但这是我的建议(之前在 Reddit 上谈到过)。
// If you want the user to **have** to be a custom URL
req.param('userId', function(req, res, next) {
db.getUser(userId, function(e, usr) {
if (e) throw new Error(e);
req.user = usr;
});
});
req.all("*", function(req, res, next) {
if (!req.user) return res.redirect('/login');
});
// Rest of routes
req.get()
req.post()
也就是说,您通常不应该以这种方式让用户登录。通常你会在 session 中设置用户并以这种方式验证它。 Here's a good article on setting up sessions in Express.
如果你这样做,你会做这样的事情:
req.all("*", function(req, res, next) {
var userId = req.session('userid');
if (!userId) res.redirect('/login');
db.getUser(userId, function(e, usr) {
if (e) throw new Error(e);
if (!usr) return res.redirect('/login');
// Now the user is accessbile through its session
req.session.user = usr;
});
});
// Rest of routes
req.get()
req.post()
密码重置需要所谓的随机数。这将是您的数据库中具有创建日期的小对象。您将使用该随机数的网站链接通过电子邮件发送给他们。
每当命中使用密码重置随机数的路由时,您都会在数据库中查找它,验证它是否足够新(在 X 小时或几天内),然后让他们访问重置密码的路由。
您的项目要求非常模糊,所以我不确定您需要什么。
关于javascript - NodeJS session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21966690/