我有一个忘记密码的简单功能,当用户请求更改密码时,他会收到一封带有令牌的电子邮件,点击它时他的电子邮件将被重定向到一个页面,该页面将接受他的新密码。
我所做的是,当我单击电子邮件中的链接时,服务器获取请求并且从链接中取出数据的函数使用数据呈现页面(使用 res.render),然后它应该重定向到呈现的页面。
我面临的问题是当我单击链接时,我正在获取数据和页面呈现,但我不能让 res.redirect() 工作。
我的链接看起来像这样
http://localhost:3000/api/resetpassword?_csrf=ab8aa6a41567f817330e3e0a214725f8b2f88b487d5bef16f162e033c6a63dc41933511ddb79cb44ca049f472b3e0c593dbbaf&email=dummyEmail%2540dumyurl.ca
然后我使用 app.get() 在服务器上获取请求。
app.get('/api/resetpassword', Admin.resetPasswordPage);
我的渲染和重定向功能看起来像这样;
resetPasswordPage: function (req, res, next) {
req.query.email = decodeURIComponent(req.query.email) ;
res.render('resetPassword', {
Email: req.query.email,
Csrf : req.query._csrf,
}, function (err, html) {
console.log("TESTING HTML ", html);
if (!err)
res.redirect("/resetPassword");
});
}
渲染成功,因为我在 html 参数中获得了页面的完整 HTML,但问题是如何重定向到该页面。该页面是在 EJS 和它的视图文件夹中创建的。