nodemailer 中的链接不起作用
links in nodemailer not working
我正在使用 nodemailer 向用户发送重置密码 link,nodemailer 发送邮件但是我在文本中设置的 link 在浏览器中不起作用,它在重置后删除了路由,原因我不知道。它打印无法获取路线
var UserSchema = new mongoose.Schema({
email: {type: String, unique: true},
resetPasswordToken: String,
resetpasswordExpires: Date
})
mongoose.model("User", UserSchema )
var mailOptions = {
to: user.email,
from: 'my email',
subject: 'Password Reset',
text: 'Please click on the following link to reset your
password' + 'https://' + req.headers.host + '/reset/' + token + '\n\n' + ' ignore if you didn't request',
};
这是我获取 link
的路径
app.get("/reset/:token", function(req,res){
User.findOne({ resetPasswordToken: req.params.token, resetPasswordExpires: { $gt: Date.now()}}, function(err, user){
if(err){
console.log(err);
req.flash('error', 'Password reset token is invalid or has expired')
return res.redirect('/forgot')
} else {
res.redirect('/reset' + req.params.token);
}
})
})
出现错误
cannot GET /resetf94f496k9lfg
相反,这就是它的本意。如果我在发送邮件时转到 mongo shell,则 resetPasswordtoken 匹配
/reset/f94f496k9lfg
在浏览器中重置后删除路由的原因 url 我不知道。任何帮助表示赞赏
应该是:
router.get('/reset/:token', function(req, res) {
User.findOne({ resetPasswordToken: req.params.token, resetPasswordExpires: { $gt: Date.now() } }, function(err, user) {
if (!user) {
req.flash('error', 'Password reset token is invalid or has expired.');
return res.redirect('/forgot');
}
res.render('reset', {token: req.params.token});
});
});
在路线中。您最初的错误是因为您在重定向中缺少“/”,但如果您修复了它,则会给您带来无限的重定向,这会使您的应用程序崩溃。
我正在使用 nodemailer 向用户发送重置密码 link,nodemailer 发送邮件但是我在文本中设置的 link 在浏览器中不起作用,它在重置后删除了路由,原因我不知道。它打印无法获取路线
var UserSchema = new mongoose.Schema({
email: {type: String, unique: true},
resetPasswordToken: String,
resetpasswordExpires: Date
})
mongoose.model("User", UserSchema )
var mailOptions = {
to: user.email,
from: 'my email',
subject: 'Password Reset',
text: 'Please click on the following link to reset your
password' + 'https://' + req.headers.host + '/reset/' + token + '\n\n' + ' ignore if you didn't request',
};
这是我获取 link
的路径app.get("/reset/:token", function(req,res){
User.findOne({ resetPasswordToken: req.params.token, resetPasswordExpires: { $gt: Date.now()}}, function(err, user){
if(err){
console.log(err);
req.flash('error', 'Password reset token is invalid or has expired')
return res.redirect('/forgot')
} else {
res.redirect('/reset' + req.params.token);
}
})
})
出现错误
cannot GET /resetf94f496k9lfg
相反,这就是它的本意。如果我在发送邮件时转到 mongo shell,则 resetPasswordtoken 匹配
/reset/f94f496k9lfg
在浏览器中重置后删除路由的原因 url 我不知道。任何帮助表示赞赏
应该是:
router.get('/reset/:token', function(req, res) {
User.findOne({ resetPasswordToken: req.params.token, resetPasswordExpires: { $gt: Date.now() } }, function(err, user) {
if (!user) {
req.flash('error', 'Password reset token is invalid or has expired.');
return res.redirect('/forgot');
}
res.render('reset', {token: req.params.token});
});
});
在路线中。您最初的错误是因为您在重定向中缺少“/”,但如果您修复了它,则会给您带来无限的重定向,这会使您的应用程序崩溃。