【发布时间】:2022-08-06 22:58:14
【问题描述】:
好的,首先,这是我的第一篇文章。我已经在高处和低处寻找解决方案,但没有找到。我首先在 Udemy 上发布了这个,因为我参加过的课程,但没有人回答,所以我在这里重新发布。
我一直在努力弄清楚为什么新密码页面无法正确显示给我。重置链接工作正常,当我从电子邮件链接发送到新密码页面时,我什至可以在新密码页面上重置密码。
但是,无论我做什么,我都无法让它显示任何样式。它只给了我基本的html。逻辑工作正常,只是页面显示不正确。
我知道这也不是 css 文件夹的路径问题。如果我只是简单地呈现为另一个没有任何令牌逻辑的基本页面,例如用新密码页面替换我的索引页面,那么它会正常显示。我只是不知道我错过了什么,或者是否有一些我需要考虑的更新。
我希望有人看到这一点并可以帮助我。这是唯一不能正常工作的事情,而且非常令人沮丧。
为了更清楚一点,如果我执行下面的操作,并且只是替换或创建一条路线,页面就会正确显示。我认为是令牌逻辑破坏了渲染,我只是不知道如何,因为我没有收到任何错误。
请让我知道您可能需要查看哪些代码,因为我不确定哪些部分会有所帮助,这里有很多活动部分。我很乐意发布任何需要的东西。
exports.getNewPassword = (req, res, next) => {
res.render(\"auth/new-password\", {
path: \"/new-password\",
pageTitle: \"Update Password\",
});
};
使用内置逻辑并遵循电子邮件重置链接,下面将不会呈现任何样式,只会呈现 html。
exports.getNewPassword = (req, res) => {
const token = req.params.token;
User.findOne({
resetToken: token,
resetTokenExpiration: { $gt: Date.now() },
})
.then((user) => {
if (!user) {
req.flash(
\"error\",
\"That reset password link has already been used.\"
);
return res.redirect(\"/\");
}
let message = req.flash(\"error\");
message.length > 0 ? (message = message[0]) : (message = null);
res.render(\"auth/new-password\", {
path: \"/new-password\",
pageTitle: \"New Password\",
errorMessage: message,
userId: user._id.toString(),
passwordToken: token,
});
})
.catch((err) => console.log(err));
};
我也在使用 ejs 进行模板化。正如我上面所说,如果我删除所有令牌逻辑并将页面呈现为普通视图,它就可以正常工作。
<main>
<% if (errorMessage) { %>
<div class=\"user-message user-message--error\"><%= errorMessage %></div>
<% } %>
<form class=\"login-form\" action=\"/new-password\" method=\"POST\">
<div class=\"form-control\">
<label for=\"password\">Password</label>
<input type=\"password\" name=\"password\" id=\"password\">
</div>
<input type=\"hidden\" name=\"userId\" value=\"<%= userId %>\">
<input type=\"hidden\" name=\"passwordToken\" value=\"<%= passwordToken %>\">
<input type=\"hidden\" name=\"_csrf\" value=\"<%= csrfToken %>\">
<button class=\"btn\" type=\"submit\">Update Password</button>
</form>
</main>
标签: node.js