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

时间:2015-09-18 00:39:18

标签: node.js express passport.js

每当我保存新代码时,我的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);
  });
});

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

1 个答案:

答案 0 :(得分:0)

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

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

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