在節點我有一個HTTPS服務器,我使用的會話與最大生存週期值,下面的代碼:爲什麼我的會話cookie過期了?
app.use(express.cookieParser());
app.use(express.session({
secret: 'secret stuff',
store: sessionStore,
cookie: {
secure: true,
maxAge: 60 * 1000 //1 minute
}
}));
我希望有一個功能,例如,如果用戶訪問MAXAGE內的網站(在這種情況下,1分鐘)cookie計時器重新開始,並且他/她還剩下1分鐘以釋放會話ID。
我看到req.session._expires
已更新(由會話中間件),但Cookie保持原樣。所以cookie將會過期,會產生一個新的會話編號connect.sid
。
我該如何做到這一點?我認爲它是由會話中間件自動完成的,但似乎Cookie的到期和會話到期是兩個不同的事情,而不是session._expires的用途是什麼?
編輯
Here DanielBaulig字我的問題更好。正如馬克B在評論中寫道,cookie會過期,所以會話成爲孤兒。這就是我想要避免的,當會話被觸碰時,我想更新cookie。
Cookie使用期限設置cookie在用戶瀏覽器中應存活的時間。會話生存期會設置會話在服務器上應存活的時間。它們中的任何一個都可以獨立於另一個過期。 –
@MarcB清楚,謝謝,所以如果我是對的,我應該自己更新我的cookie,或者將它保留爲空,併爲會話設置一個maxAge(這將是另一個問題:))。 – balazs
如果用戶的cookie過期,則相應的會話文件變爲孤立,並且用戶被「註銷」。如果會話文件已過期,則用戶也會「註銷」,即使它們曾經是有效的會話cookie。 –