【发布时间】:2017-07-21 12:39:26
【问题描述】:
我正在编写一个快速应用程序,并且正在使用 cookie-session 来保持 Google OAuth2 Passport 会话(只是一个电子邮件地址,没有别的)。我顺利通过了 OAuth 身份验证并创建了两个 cookie,但是,两个 cookie 始终设置为自身份验证之日起 1 年到期。我尝试过的事情:
- 我检查了一个电子邮件地址的大小(以 KB 为单位),它在 cookie 可以存储的范围内。
- 我尝试使用
maxAge和maxage作为对象键(另一个 Stack Overflow 帖子的想法,有人提到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 会这样?提前感谢您的帮助。
【问题讨论】:
标签: node.js express cookies passport.js session-cookies