我正在撰写快速应用,并且正在使用Cookie会话来保留Google OAuth2 Passport会话(只需一个电子邮件地址,没有其他内容)。我完成了OAuth身份验证并创建了两个cookie,但是,这两个cookie始终设置为从身份验证之日起1年后到期。我尝试过的事情:
maxAge
& maxage
作为对象键(来自另一个Stack Overflow帖子的想法,有人提到maxAge
无效。){ passport: { user: bill@bill.com }}
req.cookieOptions
中未设置任何内容。但是,这两个Cookie都显示在req.cookies
中。这里有一些代码:
var cookieParser = require('cookie-parser');
var session = require('cookie-session');
var expiryDate = new Date(Date.now() + 60 * 60 * 1000) // 1 hour
var sessionOptions = {
name: 'cookie_name',
secret: 'top secret',
cookie : { httpOnly: true, maxAge: expiryDate }
}
app.use(cookieParser());
app.use(session(sessionOptions));
app.get('/auth/provider',
passport.authenticate('google', { scope: ['profile', 'email'] }))
app.get('/auth/google/callback',
passport.authenticate('google'),
function(req, res) {
// session is set here correctly. Again, no cookieOptions, expires in 1 year.
res.redirect('/posts');
});
为什么cookie会话以这种方式表现?在此先感谢您的帮助。
答案 0 :(得分:1)
根据documentation of cookie-session
,options
对象是平的。您添加了包含值的其他键cookie
。
根据文档,选项应该是
var sessionOptions = {
name: 'cookie_name',
secret: 'top secret',
httpOnly: true,
maxAge: expiryDate
}
express-session
中间件期望Cookie选项位于密钥cookie
下。