Express + Passport:req.user 每次保存代码时重置

Express + Passport: req.user resets on every code save

每当我保存新代码时,我的 req.user 都会在我的 Express 应用程序中重置。

我正在使用 Twitter 策略,这是我安装护照中间件的方式:

app.use(cookieParser('secret'));
app.use(session({
  secret: 'secret',
  resave: false,
  saveUninitialized: true
}));
app.use(passport.initialize());
app.use(passport.session());

这是序列化和反序列化逻辑:

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

passport.deserializeUser(function (id, done) {
  User.findById(id, function (err, user) {
    done(err, user);
  });
});

知道为什么会这样吗?我该如何解决这个问题?

如果我没理解错的话,你在你的应用程序代码中做了一些事情,然后你发现你丢失了会话? 默认会话存储是内存。当您在代码中执行某些操作时,您必须重新启动应用程序(或者您使用其他应用程序来执行此操作(nodemon、forever 等))。当您重新启动应用程序时,应用程序内存是干净的。因此你的会话丢失了。 您可以将会话存储在文件或数据库中: redis 数据库示例(来自文档的代码): 安装 https://www.npmjs.com/package/connect-redis 然后在应用程序中:

var session = require('express-session');
var RedisStore = require('connect-redis')(session);

app.use(session({
    store: new RedisStore(options),
    secret: 'keyboard cat'
}));