我想在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
答案 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