未设置 cookie-session maxAge,始终在 1 年内过期
cookie-session maxAge is not set, always expires in 1 year
我正在编写一个快速应用程序并使用 cookie-session 来保持 Google OAuth2 Passport 会话(只是一个电子邮件地址,没有别的)。我顺利通过了 OAuth 身份验证并创建了两个 cookie,但是,两个 cookie 始终设置为从身份验证时起 1 年到期。我尝试过的事情:
- 我检查了电子邮件地址的大小(以 KB 为单位),它远远低于 cookie 可以存储的大小。
- 我试过使用
maxAge
和 maxage
作为对象键(来自另一个 Stack Overflow post 的想法,有人提到 maxAge
不起作用。)
- 我检查过会话是否正确持续。从 console.logs 开始,会话设置为:
{ 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-session 会这样吗?在此先感谢您的帮助。
根据 documentation of cookie-session
,options
对象是平面的。您已经添加了保存值的附加键 cookie
。
根据文档,选项应该是
var sessionOptions = {
name: 'cookie_name',
secret: 'top secret',
httpOnly: true,
maxAge: expiryDate
}
express-session
中间件期望 cookie 选项位于键 cookie
.
下
我正在编写一个快速应用程序并使用 cookie-session 来保持 Google OAuth2 Passport 会话(只是一个电子邮件地址,没有别的)。我顺利通过了 OAuth 身份验证并创建了两个 cookie,但是,两个 cookie 始终设置为从身份验证时起 1 年到期。我尝试过的事情:
- 我检查了电子邮件地址的大小(以 KB 为单位),它远远低于 cookie 可以存储的大小。
- 我试过使用
maxAge
和maxage
作为对象键(来自另一个 Stack Overflow post 的想法,有人提到maxAge
不起作用。) - 我检查过会话是否正确持续。从 console.logs 开始,会话设置为:
{ 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-session 会这样吗?在此先感谢您的帮助。
根据 documentation of cookie-session
,options
对象是平面的。您已经添加了保存值的附加键 cookie
。
根据文档,选项应该是
var sessionOptions = {
name: 'cookie_name',
secret: 'top secret',
httpOnly: true,
maxAge: expiryDate
}
express-session
中间件期望 cookie 选项位于键 cookie
.