google搜索,我终于发布我有史以来第一个问题两天后:PassportJS /忘记密码:req.user未定义只有一次
我尝试在我的的NodeJS,实行忘记密码功能快速,网站下面这个:http://sahatyalkabov.com/how-to-implement-password-reset-in-nodejs/
事情是,在app.post('重置/:令牌')路线,req.user是未定义的,但它是唯一的地方在我的代码中它的未定义!
我认为它可能来自“独特的链接”类型的路线,但不知道如何解决这个问题。
.ejs
对“重置/:令牌”操作的表单也一样。
这样resetPasswordToken
不能输入新的密码后,发现..
app.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('./pages/reset.ejs', {
username: req.user
});
});
});
app.post('/reset/:token', function(req, res) {
async.waterfall([
function(done) {
console.log('user: ' + req.user);
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('back');
}
user.password = req.body.password;
user.resetPasswordToken = undefined;
user.resetPasswordExpires = undefined;
user.save(function(err) {
req.logIn(user, function(err) {
done(err, user);
});
});
});
},
function(user, done) {
var mailOptions = {
to: user.email,
from: '[email protected]',
subject: 'Your password has been changed',
text: 'Hello,\n\n' +
'This is a confirmation that the password for your account ' + user.email + ' has just been changed.\n'
};
smtpTransport.sendMail(mailOptions, function(err) {
req.flash('success', 'Success! Your password has been changed.');
done(err);
});
}
`enter code here`
], function(err) {
res.redirect('/');
});
});
其实,这是我的第一篇文章在这里,坏压痕抱歉..
非常感谢您的回答安东尼,那东西是user.findOne不起作用。 它可能来自req.params.token,当我console.log它返回“:token”。 我怎样才能得到令牌? – Naguib
你能给我更多的信息吗?在帖子或你的链接?因为您的令牌应该生成并发送到用户的电子邮件中。所以当用户点击电子邮件时,它将有一个链接,如:localhost:8000/reset/wrotesomething - >在这里,我的req.params.token将是一些东西。 拍摄我制作的样板文件,它可能会帮助您了解相似的系统:https://github.com/haukka/sequelize-express-passport 也许您会在上面找到您的答案(在剧目中路线,文件索引)对不起,你会发现一些法文文本。 –