Aus Sicherheitsgründen setze ich SESSION_EXPIRE_AT_BROWSER_CLOSE auf true.
>Aber Browser-Length-Cookies (Cookies, die ablaufen, sobald der Nutzer seinen Browser schließt) haben keine Ablaufzeit, dann SESSION_COOKIE_AGE hat keine Auswirkungen (Ja, ich überprüfe es). Aber ich möchte eine Abmeldung / Timeout bei Inaktivität plus abmelden beim Schließen einstellen.
Meine Frage ist: Was ist der beste Weg, um das Inaktivitäts-Timeout / Logout in Browser-Length-Cookies zu implementieren?
Wie Sie erklären, sind SESSION_EXPIRE_AT_BROWSER_CLOSE und SESSION_COOKIE_AGE nicht kompatibel. Wenn Sie ein Ablaufdatum für einen Cookie festlegen, wird dieser Cookie kein Browser-Dauer-Cookie.
Um Ihr gewünschtes Verhalten zu erreichen, sollten Sie
Ein eleganter Weg, um die Ablaufzeit von Hand zu kontrollieren, ist:
Die timeout benutzerdefinierte Middleware kann wie folgt aussehen:
%Vor% Denken Sie daran, Sitzungen zu aktivieren, um lastRequest
zu speichern.
Diese Lösung wurde von mir geschrieben und getestet und funktioniert jetzt auf meiner Site. Dieser Code hat GNU-Lizenz;)
Neu bei django 1.6 (... zwei Jahre später ...)
Datetime- und Timedelta-Werte sind nur serialisierbar, wenn Sie das PickleSerializer . Wenn nicht, ist die einfachste Lösung datetime in Unix-Zeitstempel übersetzen und zurück . Unter dieser Übersetzung können Sie frei posten.
Bearbeitet
Die App django-session-security bietet einen Mechanismus, um inaktive authentifizierte Benutzer abzumelden. Schau es dir an.Tags und Links django session-timeout