Как получить персональный паспорт. js сообщений об ошибках? - PullRequest
0 голосов
/ 25 марта 2020

Я использую паспорт для аутентификации и / или авторизации на Express бэкэнде. Я хотел бы, чтобы пользователь получал полезные сообщения об ошибках при неудачных попытках входа в систему, но продолжаю получать сообщение по умолчанию Unauthorized. Я не уверен, где я ошибаюсь или что мне не хватает, и я искал похожие проблемы, но, похоже, ничто не указывает мне правильное направление.

Ниже приведены соответствующие фрагменты кода.

Passport Local Config

const localOptions = {
  usernameField: 'username',
  passReqToCallback: true,
};

// Local Strategy Creation
const localLogin = new LocalStrategy(
  localOptions,
  async (req, username, password, done) => {
    try {
      const user = await User.findOne({ username });

      if (!user)
        return done(null, false, {
          message: `No user corresponding to ${username} was found`,
        });

      const isMatch = await user.comparePasswords(password);

      if (!isMatch)
        return done(null, false, { message: `Incorrect password` });

      return done(null, user);
    } catch (error) {
      return done(error);
    }
  }
);

Контроллер входа

export default {
  login: async (req, res, next) => {
    try {
      const { user } = req;

      const token = authToken(user);

      return res.status(200).json({ token, user });
    } catch (error) {
      next(error);
    }
  },
};

Маршрут входа в систему

import express from 'express';
import passport from 'passport';

import { authController } from '../controllers';

import '../services/passport';

const authRouter = express.Router();

const handleLogin = passport.authenticate('local', { session: false });

authRouter.route('/login').post(handleLogin, authController.login);

export default authRouter;
...