Моя функция проверки подлинности паспорта не работает - PullRequest
0 голосов
/ 19 февраля 2019

У меня есть функция (см. Код), все работает, кроме функции user.comparehashandpass ().

Это приложение nodejs express mongoose.Некоторое время назад все работало нормально, но я не знаю, что пошло не так

код работает, кроме user.compareHashAndPass ()

 passport.use(new LocalStrategy(
  function(username, password, done) {
    User.findOne({ username: username }, function (err, user) {
      if (err) { return done(err); }
      if (!user) {
        return done(null, false, { message: 'Incorrect username.' });
      }

       user.compareHashandpass(password, user.password, function (err, 
res) {
    console.log("code reaches here")
    if (err) {
        return done(err);
    } else {
        return done(err, false, {
            message: 'Incorrect password'
        });
    }
  });


  return done(null, user);
});
  }
));

Я включил model.method вфайл модели.Как я уже говорил, раньше это работало нормально.

userSchema.methods.compareHashandpass =  function(password, hash, cb){
            bcrypt.compare(password, hash, function(err, res) {
            if (err) return cb(err);
            if (res === false) {
            return false
            } else {
            return true
            }
            });
        };

Предполагается вернуть сообщение: «Неверный пароль», если пароль в БД и пароль, предоставленные пользователем, не проверяются.Это только аутентификация имени пользователя.Возвращает «пользователя», даже если пароль неверный.

1 Ответ

0 голосов
/ 19 февраля 2019

В вашей функции вы возвращаете true / false вместо обратного вызова (cb) try:

userSchema.methods.compareHashandpass =  function(password, hash, cb){
            bcrypt.compare(password, hash, function(err, res) {
            if (err) return cb(err);
            if (res === false) {
              cb(null,false);
            } else {
              cb(nuul, true);
            }
            });
        };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...