如何获取自定义的password.js错误消息?

时间:2020-03-25 14:01:09

标签: javascript node.js express passport.js

我正在使用通行证在Express后端进行身份验证和/或授权。我希望用户在登录尝试失败后会收到有用的错误消息,但请继续获取默认的Unauthorized消息。我不确定我要去哪里错了,或者我错过了什么,并且已经查找了类似的问题,但是似乎没有什么可以指出我正确的方向。

下面是相关的代码段。

护照本地配置

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;

0 个答案:

没有答案