2013-11-04 6 views
11

Ich verwende das Python Web Framework Flask. Ich benutze Sitzungen in meiner App. Für meine App main, habe ich die Einstellung main.permanent_session_lifetime = timedelta(days=5), so dass ein Benutzer für 5 Tage nach dem Einloggen angemeldet bleibt. Aber auch ein aktiver Benutzer wird nach 5 Tagen abgemeldet. Ich möchte, dass die Ablaufzeit bei jedem Besuch der Website zurückgesetzt wird. Sie werden also erst nach 5 Tagen von Inaktivität abgemeldet. Die meisten Websites funktionieren auf diese Weise. Wie mache ich das mit Flask?Zurücksetzen der Ablaufzeit für einen Cookie in Flask

+1

Flask versucht, Ihnen die Werkzeuge, um so etwas wie dieses selbst zu schreiben. Wie Sie "Aktivität" definieren, ist abhängig von der Website. Ist "Aktivität" der Besuch der Website oder etwas wie der Kauf eines Produkts? Wie Sie sehen, könnte es keine Option wie "Inaktivität" geben, Sie müssten sie selbst implementieren. –

+0

In meinem Fall bedeutet Aktivität nur den Besuch der Website. Wenn sie eine Seite auf der Website besuchen, bevor der Cookie abläuft, möchte ich, dass der Ablauf auf 5 Tage ab diesem Zeitpunkt zurückgesetzt wird. –

Antwort

18

Sie können die Sitzung bei jeder Anforderung mit einem @before_request-Handler für den Client erneuern.

Versuchen Sie Folgendes:

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

Funktioniert wunderbar. Ich wollte die '@ app.before_request'-Funktion aus anderen Gründen schon vorher haben, also ist das großartig zu wissen. –

+0

Dies funktioniert nicht, wenn serverseitige Sitzungen (flask-kvsession) verwendet werden. Irgendwelche Ideen, wie man es repariert? – zengr

+2

@zengr Dies ist ein Problem von flask-kvsession, da es sich dabei um einen "Drop-in-Ersatz für Flasks signiertes Cookie-basiertes Sitzungsmanagement" handelt. Es macht seine Arbeit nicht vollständig. Sende einen Fehlerbericht. Eine Problemumgehung kann sein, die Methode '.regenerate()' aufzurufen. –

Verwandte Themen