未调用Express / Passport deserializeUser,req.session.passport undefined

时间:2018-02-24 21:14:38

标签: node.js express authentication passport.js

我有一台Express服务器使用Passport进行身份验证和React前端。

当我发布登录请求时,它有效; req.session控制台记录为:



 cookie: 
   { path: '/',
 _expires: 2018-02-25T01:06:21.555Z,
 originalMaxAge: 14400000,
 httpOnly: true,
 secure: false },
 passport: { user: 'test' }




(' test'实际上是我用的用户名)。现在我只是尝试使用测试路由和简单的get请求来调试它:



fetch('/api/auth/test', { credentials: 'include' })




我登录日志req.session并且护照不见了:



 cookie: 
   { path: '/',
 _expires: 2018-02-25T01:06:26.596Z,
 originalMaxAge: 14400000,
 httpOnly: true,
 secure: false }




这是我的Passport代码:

在我的路线中:



authRoutes.post('/login', (req, res, next) => {
  passport.authenticate('local', (err, user, info) => {
    if (err) { return next(err); }
    if (!user) { return res.json({ message: info }); }
    req.logIn(user, (err) => {
      if (err) { return next(err); }
      return res.json({ message: 'ok', user: user.username });
    });
  })(req, res, next);
});




local.js:



const options = {};

init();

passport.use(
  new LocalStrategy(options, (username, password, done) => {
    User.findByUsername(username)
      .then((user) => {
        if (!user) {
          return done(null, false, 'badUser');
        }
        if (!authHelpers.comparePass(password, user.password)) {
          return done(null, false, 'badPw');
        }
        return done(null, user);
      })
      .catch(err => done(err));
  })
);




我已经在这个问题上工作了好几个小时,无法解决这个问题。有什么想法吗?

0 个答案:

没有答案