2017-02-17 72 views
0

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

我在这个过程中遇到的主要障碍是当用户点击他们电子邮件中的链接时,从链接获取唯一标记作为参数。我引用的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(令牌)目前呈现出了空当我希望它包含用户密码令牌。

一些更多的背景信息,我使用SendGrid作为我的所有自动电子邮件,Mailinator作为用户测试电子邮件,以下是当我将鼠标悬停在电子邮件中的链接上时的路线。 (我认识到,像小,可能无法查看没有几次缩放,但我想包括尽可能多的URL尽可能的)

enter image description here

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

回答

0

需要由query访问属性:

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

req.query.token产量不确定和req.query是一个空的对象。经过进一步检查后,我相信无论是否正确传递查询字符串或b)SendGrid正在修改链接的方式阻止正确访问参数。 –