Passportjs成功回调从未调用

时间:2019-01-21 04:11:02

标签: express sequelize.js passport.js

我正在尝试使用护照js进行本地身份验证并在express中进行分隔。我遇到的问题是成功回调永远不会在成功身份验证时触发。日志显示已找到用户,但用户对象从未登录到请求回调中,也未触发res.send。

路线和策略

goodmorning etcetera longer sentence

应用日志

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 });
  },
);

1 个答案:

答案 0 :(得分:1)

我解决了这个问题。再次运行后,我收到错误Error: Failed to serialize user into session。在this question之后,我添加了以下代码来对用户进行序列化和反序列化并解决问题。

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

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