将cookieSession与Passport一起使用

时间:2013-09-25 17:33:43

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

我想在Passport中使用cookie会话存储,因为内存存储不是为生产而设计的:

Warning: connection.session() MemoryStore is not
designed for a production environment, as it will leak
memory, and will not scale past a single process.

这是我的Express初始化:

app.use(express.bodyParser({keepExtensions:true}));
app.use(express.cookieParser(cookieSecret));
app.use(express.cookieSession({ 
    key: cookieKey,
    secret: cookieSecret,
    maxAge: sessionTimeout
}));
app.use(passport.initialize());
app.use(passport.session());
app.use(express.methodOverride());
app.use(express.static(__dirname + '/public'));

如果我将express.cookieSession更改为express.session,一切正常。使用cookieSession用户登录成功但用户在下一页加载发生后不再登录。有关如何使护照与cookie会话一起工作的任何提示吗?

我正在使用Express 3.0.0

2 个答案:

答案 0 :(得分:1)

cookieSession的初始化不正确。试试这个:

app.use(express.cookieSession({ 
  key    : cookieKey,
  secret : cookieSecret,
  cookie : {
    maxAge: sessionTimeout
  }
}));

另外,请确保sessionTimeout以毫秒为单位。

答案 1 :(得分:1)

我知道这是旧的,但我遇到了同样的问题。事实证明,你不需要(事实上你不能)在cookieParser和cookieSession中设置secret选项。

在我自己的帖子中查看我的回答:https://stackoverflow.com/a/30109922/3500059