パスワードを忘れるという単純な機能があります。ユーザーがパスワードの変更を要求すると、トークン付きのメールが届き、それをクリックするとメールが届き、新しいパスワードを取得するページにリダイレクトされます。
私がすることは、電子メールのリンクをクリックすると、サーバーがリクエストを取得し、関数がリンクからデータを取り出して (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 で作成され、views フォルダーにあります。