【问题标题】:Passport's 'req.user' becomes undefined sometimesPassport 的“req.user”有时会变得未定义
【发布时间】:2017-10-01 06:09:02
【问题描述】:

我正在使用护照进行授权,并且我正在使用“connect-mongo-session”模块将会话保存在 mongodb 中。我注意到,当我尝试登录时,req.user 对象变得未定义,尽管会话对象存在于数据库中,并且护照和会话详细信息存在于 req 对象中。这是我的会话设置:

let store;

if(env === "development")
    store =  new MongoDBStore({  //Allows session to be stored and retreived even when server restarts.
  uri: config.db,
  collection: 'mySessions'
  })

else {
   store =  new MongoDBStore({  //Allows session to be stored and retreived even when server restarts.
  uri: config.db,
  collection: 'Cosmos'
  })
}

  app.use(session({
    store: store,
    saveUninitialized: true,
    resave: true,
    secret: config.app.sessionSecret
  }));

  app.use(passport.initialize());
  app.use(passport.session());

这是负责序列化和的代码:

    passport.serializeUser((user, done) => {
    done(null, user.id);
});

// Use Passport's 'deserializeUser' method to load the user document
passport.deserializeUser((id, done) => {
    User.findOne({
        _id: id
    }, '-password -salt', (err, user) => {
        done(err, user);
    });
});

【问题讨论】:

    标签: node.js mongodb session express passport.js


    【解决方案1】:

    我能够通过将 saveUninitialized 更改为 false 并将重新保存为 false 来解决问题,所以现在看起来像这样:

        app.use(session({
          store: store,
          saveUninitialized: false,
          maxAge: 1000 * 60 * 60 * 84, // I added this just in case
          resave: false,
          secret: config.app.sessionSecret
      }));
    

    【讨论】:

      猜你喜欢
      • 2019-08-13
      • 2021-12-27
      • 2014-08-08
      • 1970-01-01
      • 2019-09-30
      • 2019-12-10
      • 2015-10-18
      • 2018-08-06
      • 2017-03-26
      相关资源
      最近更新 更多