【问题标题】:Getting param from Reset Password link (Express)从重置密码链接(Express)获取参数
【发布时间】:2017-07-07 13:30:29
【问题描述】:

我正在为我网站的用户实施重置密码功能。一旦经过验证、定义明确的用户注册,就会生成一个唯一令牌(特别是针对这种情况),保存在数据库中,并作为参数包含在发送给用户的“忘记密码”电子邮件中的链接的查询字符串中.然后,用户检查他们的电子邮件,单击链接,然后将被重定向到可以重新定义密码的视图。

我在此过程中处理的主要障碍是当用户单击电子邮件中的链接时,从链接中获取唯一令牌作为参数。我引用了official Express documentation 并指定了路由(当用户在收件箱中单击它以转到重置密码的视图时,该路由在电子邮件中被激活),并编写了以下路由来处理它:

usersRouter.route('/reset/passwordLoggedOut/:token') 
    .get(emails.resetPasswordForgot); 

使用随后的 resetPasswordForgot() 函数(为方便查看而缩小):

function resetPasswordForgot(req, res){
    const token = req.params.token;
    console.log(token);
    res.send(200);
}

当我希望它包含用户密码令牌时,Console.log(token) 当前显示为 null。

更多背景信息,我将 SendGrid 用于我的所有自动电子邮件,Mailinator 用于以用户身份测试电子邮件,以下是当我将鼠标悬停在电子邮件中的链接上时路由的样子。 (我意识到图像很小,如果不放大几次可能无法查看,但我想包含尽可能多的 URL)

请让我知道我需要做什么才能从电子邮件中的链接中获取令牌参数。

【问题讨论】:

    标签: node.js email express query-string sendgrid


    【解决方案1】:

    您需要通过query 属性访问:

    function resetPasswordForgot(req, res){
        const token = req.query.token;
        console.log(token);
        res.send(200);
    }
    

    【讨论】:

    • req.query.token 产生 undefined 并且 req.query 是一个空对象。经过进一步检查,我认为要么 a.) 未正确传递查询字符串,要么 b.) SendGrid 正在修改链接,导致无法正确访问参数。
    猜你喜欢
    • 2014-08-14
    • 2013-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多