2013-11-04 77 views
11

我正在使用Python Web框架Flask。我在我的應用程序中使用會話。對於我的應用程序main,我已設置main.permanent_session_lifetime = timedelta(days=5),以便用戶在登錄後將保持登錄狀態5天。但即使是活躍的用戶也會在5天后註銷。我希望每次訪問該網站時都需要重置到期時間,因此您僅在不活動的5天后才能註銷。大多數網站都是這樣工作的我如何使用Flask做到這一點?重置Flask中Cookie的到期時間

+1

瓶試圖給你的工具,自己寫這樣的事情。你如何定義「活動」取決於網站。是「活動」訪問該網站,還是像購買產品?正如你所看到的,不可能有一個選項,比如「不活動」,你必須自己實現它。 –

+0

就我而言,活動只是表示訪問該網站。如果他們在cookie過期之前訪問網站上的任何頁面,我希望從那時起將到期時間重置爲5天。 –

回答

18

您可以使用@before_request處理程序在每個請求中將會話更新到客戶端。

嘗試以下操作:

@app.before_request 
def func(): 
    session.modified = True 
+0

美麗的作品。實際上我之前想要'@ app.before_request'功能是出於其他原因,所以這是很瞭解的。 –

+0

這在使用服務器端會話(flask-kvsession)時不起作用。任何想法如何解決它? – zengr

+2

@zengr這是flask-kvsession的問題,因爲它被認爲是「對Flask簽名的基於cookie的會話管理的簡單替代」。它並沒有完全完成它的工作。發佈錯誤報告。一種解決方法可能是調用'.regenerate()'方法。 –