Отправка проверочных сообщений через PassportJS - PullRequest
0 голосов
/ 29 ноября 2018

У меня есть API аутентификации с использованием Passport и Express.На внешнем интерфейсе я использую React, который читает данные JSON, поступающие из API.Все работает, как и ожидалось, однако, если пользователь вводит электронное письмо, которого нет в файле при входе в систему, сейчас сервер отвечает только 401, тот же ответ, если пароль неверен.

Есть ли способ отправить конкретное сообщение из Passport или с сервера, когда пользователь вводит неверный адрес электронной почты или неверный пароль?

У меня естьпопытался добавить "сообщение" в Passport, но я не выяснил, как получить к нему доступ.

Passport.js

// Local Strategy
const localLogin = new LocalStrategy(
  { usernameField: "email", passwordField: "password" },
  function(email, password, done) {
    User.findOne({ email: email }, (err, user) => {
      if (err) {
        return done(err);
      }
      if (!user) {
        return done(null, false, {
          message: "We don't have an account with that email on file"
        });
      }
      user.validPassword(password, (err, isMatch) => {
        if (err) {
          return done(err);
        }
        if (!isMatch) {
          return done(null, false);
        }
        return done(null, user);
      });
    });
  }
);

Route Handler

exports.signIn = function(req, res, next) {
  res.json({ token: createToken(req.user) });
};

Route

const requireSignIn = passport.authenticate("local", { session: false });

router.post("/login", requireSignIn, Auth.signIn);
...