Express Passportjs成功回调从未调用

Express Passportjs成功回调从未调用,express,sequelize.js,passport.js,Express,Sequelize.js,Passport.js,我正在尝试在express中使用passport js和sequalize实现本地身份验证。我遇到的问题是成功的身份验证不会触发成功回调。日志显示已找到用户,但用户对象从未记录在请求回调中,也未激发res.send 路线和战略 passport.use( 'local', new LocalStrategy( { usernameField: 'email', passwordField: 'password', passReqToCallba

我正在尝试在express中使用passport js和sequalize实现本地身份验证。我遇到的问题是成功的身份验证不会触发成功回调。日志显示已找到用户,但用户对象从未记录在请求回调中,也未激发res.send

路线和战略

passport.use(
  'local',
  new LocalStrategy(
    {
      usernameField: 'email',
      passwordField: 'password',
      passReqToCallback: true,
    },
    (req, email, password, done) => {
      // find user
      User.findOne({ where: { email } }).then(user => {
        if (!user) {
          return done(null, false);
        }
        if (password !== user.password) {
          return done(null, false);
        }
        console.log('user found!');
        return done(null, user);
      });
    },
  ),
);
app.use(passport.initialize());

// routes
app.post(
  '/login',
  passport.authenticate('local'),
  (req, res) => {
    console.log(req.user);
    res.send('logged in');
    // const expiresIn = 60 * 60 * 24 * 180; // 180 days
    // const token = jwt.sign(req.user, config.auth.jwt.secret, { expiresIn });
    // res.cookie('id_token', token, { maxAge: 1000 * expiresIn, httpOnly: true });
  },
);
应用程序日志

 express:router:layer new '/' +0ms
  express:router:route new '/login' +1ms
  express:router:layer new '/login' +0ms
  express:router:route post '/login' +0ms
  express:router:layer new '/' +0ms
  express:router:route post '/login' +0ms
  express:router:layer new '/' +0ms
  express:router:route new '/users' +0ms
  express:router:layer new '/users' +0ms
  express:router:route get '/users' +0ms
  express:router:layer new '/' +0ms
  express:router:route new '/signup' +0ms
  express:router:layer new '/signup' +1ms
  express:router:route post '/signup' +0ms
  express:router:layer new '/' +0ms
  express:router use '/' <anonymous> +0ms
  express:router:layer new '/' +0ms
  express:router use '/' <anonymous> +0ms
  express:router:layer new '/' +0ms
  express:router use '/' <anonymous> +0ms
  express:router:layer new '/' +0ms
  express:application set "port" to '3001' +0ms
Executing (default): SELECT 1+1 AS result
Connection has been established successfully.
  express:router dispatching POST /login +4s
  express:router query  : /login +2ms
  express:router expressInit  : /login +0ms
  express:router favicon  : /login +2ms
  express:router logger  : /login +0ms
  express:router jsonParser  : /login +2ms
  express:router urlencodedParser  : /login +28ms
  express:router cookieParser  : /login +0ms
  express:router serveStatic  : /login +1ms
  express:router initialize  : /login +0ms
Executing (default): SELECT "id", "firstName", "lastName", "username", "email", "password", "createdAt", "updatedAt" FROM "users" AS "user" WHERE "user"."email" = 'a' LIMIT 1;
user found!
  express:router <anonymous>  : /login +25ms
  express:router <anonymous>  : /login +1ms
  express:view require "jade" +0ms
  express:view lookup "error.jade" +190ms
  express:view stat "/home/zmigaddo/sc/views/error.jade" +0ms
  express:view render "/home/zmigaddo/sc/views/error.jade" +1ms
POST /login 500 346.104 ms - 1910
express:router:layer new'/'+0ms
快速:路由器:路由新“/登录”+1ms
快速:路由器:层新'/login'+0ms
快速:路由器:路由post'/登录'+0ms
快速:路由器:层新“/”+0ms
快速:路由器:路由post'/登录'+0ms
快速:路由器:层新“/”+0ms
快速:路由器:路由新“/用户”+0ms
快速:路由器:层新“/用户”+0ms
快速:路由器:路由获取“/用户”+0ms
快速:路由器:层新“/”+0ms
快速:路由器:路由新“/注册”+0毫秒
快速:路由器:层新“/注册”+1ms
快车:路由器:路由桩“/注册”+0毫秒
快速:路由器:层新“/”+0ms
快速:路由器使用“/”+0ms
快速:路由器:层新“/”+0ms
快速:路由器使用“/”+0ms
快速:路由器:层新“/”+0ms
快速:路由器使用“/”+0ms
快速:路由器:层新“/”+0ms
快速:应用程序将“端口”设置为“3001”+0毫秒
正在执行(默认):选择1+1作为结果
已成功建立连接。
快递:路由器调度岗/登录+4s
快速:路由器查询:/login+2ms
express:router expressInit:/login+0ms
快速:路由器传真:/login+2ms
快速:路由器记录器:/login+0ms
快速:路由器jsonParser:/login+2ms
快速:路由器urlencodedParser:/login+28ms
快速:路由器cookieParser:/login+0ms
快速:路由器服务状态:/login+1ms
快速:路由器初始化:/login+0ms
执行(默认):从“用户”中选择“id”、“名字”、“姓氏”、“用户名”、“电子邮件”、“密码”、“创建数据”、“更新数据”作为“用户”,其中“用户”。“电子邮件”=“a”限制1;
用户找到了!
快速:路由器:/login+25ms
快速:路由器:/login+1ms
快速:查看需要“jade”+0毫秒
快速:查看查找“error.jade”+190ms
express:view stat“/home/zmigaddo/sc/views/error.jade”+0ms
express:view render“/home/zmigaddo/sc/views/error.jade”+1ms
POST/login 500 346.104毫秒-1910

我解决了这个问题。再次运行后,我收到错误
错误:无法将用户序列化到会话中
。接下来,我添加了以下代码来序列化和反序列化用户,并修复了这个问题

passport.serializeUser(function(user, done) {
  done(null, user);
});

passport.deserializeUser(function(user, done) {
  done(null, user);
});

我没有看到过LocalStrategy接收req作为参数的例子,总是只有3个参数,类似这样:(用户名、密码、完成)试着像这个站点的例子那样做:DavidVicente是的,我也尝试过删除req参数,但没有效果。