簡體   English   中英

未設置cookie-session maxAge,始終在1年后過期

[英]cookie-session maxAge is not set, always expires in 1 year

我正在編寫一個快速應用程序,並且正在使用cookie會話來保持Google OAuth2 Passport會話(只是一個電子郵件地址,沒有其他)。 我通過了OAuth身份驗證,並創建了兩個cookie,但是,兩個cookie始終都設置為從身份驗證之日起1年過期。 我嘗試過的事情:

  • 我已經檢查了電子郵件地址的大小(以KB為單位),並且它可以存儲cookie的程度也很好。
  • 我試過使用maxAgemaxage作為對象鍵(來自另一個Stack Overflow帖子的想法,有人提到maxAge不起作用。)
  • 我檢查了該會話是否正確存在。 在console.logs中,會話設置如下: { passport: { user: bill@bill.com }}
  • req.cookieOptions未設置任何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會話會以這種方式運行? 先謝謝您的幫助。

根據cookie-session文檔, options對象是平坦的。 您添加了其他保存值的鍵cookie

根據文檔,選項應為

var sessionOptions = {
  name: 'cookie_name',
  secret: 'top secret',
  httpOnly: true, 
  maxAge: expiryDate
}

express-session中間件希望cookie選項在key cookie

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM