Я использую паспорт для аутентификации и / или авторизации на 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;