Nodejs Password Reset получает ошибку - PullRequest
0 голосов
/ 23 мая 2018

Я пытаюсь написать коды для сброса пароля в моем приложении Nodejs, используя Эта отличная ссылка.

Проблема, с которой я сталкиваюсь, заключается в том, что всякий раз, когда я нажимаю reset, я получаюследующая ошибка:

Невозможно установить свойство 'resetPasswordToken' со значением NULL

Может кто-нибудь помочь мне выяснить проблему?Вот как выглядят мои маршруты:

app.post('/forgot', function(req,res,next){
async.waterfall([
function(done) {
  crypto.randomBytes(20, function(err, buf) {
    var token = buf.toString('hex');
    done(err, token);
  });
},
function(token, done) {
  User.findOne({ email: req.body.email }, function(err, user) {
    if (!user) {
      res.send ("No user to be found");

    }

    user.resetPasswordToken = token;
    user.resetPasswordExpires = Date.now() + 3600000; // 1 hour

    user.save(function(err) {
      done(err, token, user);
    });
  });
},
function(token, user, done) {
  var smtpTransport = nodemailer.createTransport({
    service: 'gmail',
     auth: {
            user: 'mygamil',
            pass: 'my gmail pass'
        }
    });
  var mailOptions = {
    to: user.email,
    from: 'mygmail',
    subject: 'Password Reset',
    text: 'You are receiving this because you (or someone else) have requested the reset of the password for your account.\n\n' +
      'Please click on the following link, or paste this into your browser to complete the process:\n\n' +
      'http://' + req.get('host') + '/reset/' + token + '\n\n' +
      'If you did not request this, please ignore this email and your password will remain unchanged.\n'
  };
  smtpTransport.sendMail(mailOptions, function(err) {

    done(err, 'done');
  });
}
], function(err) {
if (err) return next(err);
res.redirect('/forgotpassword');
 });
 });

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('/forgotpassword');
}
res.render('reset', {
  user: req.user
});
});
});

Я что-то пропустил?Я попытался установить crypto, но получаю следующее сообщение:

crypto is not supported and it's now builtin feature!
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...