javascript - NodeJS session

标签 javascript node.js cookies

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

相关文章:

javascript - Node js缓冲区添加NULL终止消息

java - 编写cookie Java : Getting the server to set/use a cookie

javascript - 在触发器上用 javascript 打开网页

javascript - 在更改时显示日期选择器

javascript - typescript 路径映射未在 Node 应用程序中翻译

javascript - 如何让本地 eslint 插件与本地安装的 eslint 一起工作

Javascript - 无法调用 null 的方法 'split'

http - 如何将 cookie 添加到 typescript 和 angular2 中的任何 http.get 请求?

javascript - 调度 Action 触发,但 redux 存储不更新

javascript - toggleClass() 在点击标签时未按预期工作