[英]Node + Express Session Expiration?
我有一個快遞應用程序,我有一個登錄表單。 我需要會話持續1個月我將maxAge設置為一個月(以毫秒為單位)。
我打開了兩台電腦並登錄了24小時,當我回來時,兩人都退出了。
我如何解決這個/實現我想要做的事情? 謝謝。
您可以使用expires屬性而不是maxAge。 它將Date對象作為值。 此外,在客戶端設置后檢查會話cookie exipres。 可能會話由服務器結束(即memcached restart)。
代碼示例:
app.use(express.session(
{ secret: "secret", store: new MemoryStore(), expires: new Date(Date.now() + (30 * 86400 * 1000))
}));
但
app.use(express.session(
{ secret: "secret", store: new MemoryStore(), maxAge: Date.now() + (30 * 86400 * 1000)
}));
對我也很好。
maxAge
表示會話持續的時間,以ms為單位; expires
意味着會話即將到期,即:日期對象
var hour = 3600000
req.session.cookie.expires = new Date(Date.now() + hour)
要么
var hour = 3600000
req.session.cookie.maxAge = hour
app.use(express.session({
secret : 'sdfsdSDFD5sf4rt4egrt4drgsdFSD4e5',
store : new storage({ client : conn, cleanup: false }),
cookie : { maxAge : new Date(Date.now() + (60 * 1000 * 30)) }
}));
該文檔不建議直接設置cookie.expires。 而是直接設置cookie.maxAge。
@Vadim Baryshev接受的答案至少在最近的快遞會議實施中存在缺陷。 當您的應用啟動時,您可以創建會話實施並設置最大年齡。 至於使用expires的答案,不推薦使用,堅持使用maxAge。
這意味着寫入的maxAge示例將在服務器啟動后的一個月內每個會話到期,並且將來創建的每個會話都將立即過期。 在服務器重新啟動之前,不會有任何有效的會話。
不要傳遞日期對象,只需將毫秒數傳遞給maxAge屬性,如下所示:
app.use(
session({
...,
cookie: {
maxAge: 30 * 24 * 60 * 60 * 1000
}
})
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.