Passport js返回“ Missing Credentials”错误进行登录

问题描述

我正在使用express js创建api端点。我已使用passport jsjwt进行用户身份验证。使用Sequelize与数据库进行交互。

在Controller中,我收到{message: 'Missing Credentials'}错误

passport.js文件

passport.use('login',new LocalStrategy({ usernameField: 'email',passwordField: 'password',session: false },async (email,password,done) => {
          try {
            const user = await User.findOne({ where: { email: email }});
              if (user === null) {
                return done(null,false,{ message: 'bad username' });
              } else {
                bcrypt.compare(password,user.password).then(response => {
                  if (response !== true) {
                    console.log('passwords do not match');
                    return done(null,{ message: 'passwords do not match' });
                  }
                  console.log('user found & authenticated');
                  // note the return needed with passport local - remove this return for passport JWT
                  return done(null,user);
                });
              }
          } catch (err) {
            return done(err);
          }
        })
    ); 

LoginController.js

const loginUser = async (req,res,next) => {

    passport.authenticate('login',(err,user,info) => {
        console.log(err); // null
        console.log(user); //false
        console.log(info); // { message: 'Missing Credentials' }
        if (err || (!user)) {
            res.status(419).json({
                message: "Incorrect Username or Password",isSuccess: false
            });
        } else {

            try {

                req.login(user,{ session: false },async (error) => {
                    const token = jwt.sign({ id: user.email },jwt_secret);
                    res.status(200).json({
                        message: "Login Successfull",isSuccess: true,token
                    });
                });

            } catch (error) {
                res.status(419).json({
                    message: "Incorrect Username or Password",isSuccess: false
                });
            }
        }
    })(req,next);
};

请帮助我找到解决方案。谢谢

解决方法

尝试类似的操作,然后删除位置

passport.use(new LocalStrategy(
  function(email,done) {
    User.findOne({ email: email},function (err,user) {
      if (err) { return done(err); }
      if (!user) { return done(null,false); }
      return done(null,user);
    });
  }
));

passportjs .findOne()