Mongoose 护照号码';t返回用户名和密码以外的字段

Mongoose 护照号码';t返回用户名和密码以外的字段,mongoose,passport-local,Mongoose,Passport Local,在我的设置中,路由编程为在成功验证后打印Passport返回的所有数据: // routes/auth-providers/local.js import express from 'express'; import passport from 'passport'; import jwt from 'jsonwebtoken'; import dotenv from 'dotenv'; import passportSetup from '../../passport-setup'; do

在我的设置中,路由编程为在成功验证后打印Passport返回的所有数据:

// routes/auth-providers/local.js

import express from 'express';
import passport from 'passport';
import jwt from 'jsonwebtoken';
import dotenv from 'dotenv';
import passportSetup from '../../passport-setup';

dotenv.config();

const router = express.Router();
router.post('/',
  passport.authenticate('local', { failureRedirect: '/' }),
  (req, res) => {
    const {username, firstName, lastName} = req.body;
    console.log('req.body', req.body);
    res.json({ success: true });
  }
);
我的本地策略配置如下:

// passport-setup/strategies/local.js

const local = new LocalStrategy (
  (username, password, done) => {
    User.findOne({ username: username }, (err, user) => {
      if(err) { return done(err); }
      if (!user) { return done(null, false); }
      // if (!user.verifyPassword(password)) { return done(null, false); }
      console.log('USER', user);
      return done(null, user);
    });
  }
);
在这两个
console.log()
语句中,只有第二个语句给出了完整的用户文档,包括firstName、lastName等。但是,在我的路径中的第一个(
console.log(
console.body',req.body);
)只给出了用户名和密码。我甚至可以看到正在序列化的用户文档:

// passport-setup/index.js

passport.serializeUser((user, done) => {
  console.log('SERIALIZE', user);
  done(null, user.id);
});
我可能做错了什么


附言:回购协议可供参考。

我对
passport.js仍然是新手,但在文件中提到:

如果验证成功,将调用下一个处理程序,并将
req.user
属性设置为已验证的用户

因此,也许您需要做的只是将
req.body
更改为
req.user

const {username, firstName, lastName} = req.user;

req.body
取决于您从客户端发送的内容,所以您可能只发送了用户名和密码。我认为在这种情况下,
req.body
是通过Passport发送的?如果您看到上面的代码,Passport能够从数据库中检索完整的用户对象,如
newlocalstrategy()
中的
console.log()
所示。然而,当我尝试读取路径中的body对象时,它只显示用户名和密码。