gpt4 book ai didi

javascript - NodeJS session

转载 作者:行者123 更新时间:2023-11-30 05:38:50 24 4
gpt4 key购买 nike

谢谢,提前谢谢,所以我正在做一个项目,其中部分要求是有一个字段,用户可以在其中插入电子邮件,然后在他的电子邮件帐户上接收一个自定义 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com