簡體   English   中英

節點+快遞會話到期?

[英]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。

快速會話 - cookie.expires

@Vadim Baryshev接受的答案至少在最近的快遞會議實施中存在缺陷。 當您的應用啟動時,您可以創建會話實施並設置最大年齡。 至於使用expires的答案,不推薦使用,堅持使用maxAge。

這意味着寫入的maxAge示例將在服務器啟動后的一個月內每個會話到期,並且將來創建的每個會話都將立即過期。 在服務器重新啟動之前,不會有任何有效的會話。

不要傳遞日期對象,只需將毫秒數傳遞給maxAge屬性,如下所示:

app.use(
  session({
    ...,
    cookie: {
      maxAge: 30 * 24 * 60 * 60 * 1000
    }
  })
);

暫無
暫無

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

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