Gibt es eine Möglichkeit, verbinden Verhalten von SESSION_EXPIRE_AT_BROWSER_CLOSE und SESSION_COOKIE_AGE
Aus Gründen der Sicherheit ich SESSION_EXPIRE_AT_BROWSER_CLOSE zu wahren.
Aber, browser-Länge-cookies (cookies, die verfallen, sobald der Nutzer schließen des Browsers) nicht über ein Auslaufen der Zeit, dann SESSION_COOKIE_AGE hat keine Wirkung (ja, ich es überprüfen). Aber ich möchte, um einen logout/timeout bei Untätigkeit plus die Abmeldung auf "durchsuchen" schließen.
Meine Frage ist, Was ist der beste Weg zur Umsetzung Inaktivitäts-timeout/logout im browser-Länge cookies Szenario?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als Sie erklärt, SESSION_EXPIRE_AT_BROWSER_CLOSE und SESSION_COOKIE_AGE nicht kompatibel sind. Wenn Sie ein Ablaufdatum ein cookie, dieses cookie wird kein browser-Länge cookie.
Dann, um zu erreichen Ihre gewünschten Verhalten, sollten Sie set SESSION_EXPIRE_AT_BROWSER_CLOSE als Wahr und Kontrolle ablaufen timeout von hand.
Einen eleganten Weg, um die Kontrolle von hand ablaufen timeout:
Den timeout benutzerdefinierte middleware kann, sieht wie folgt aus:
Lösung für die alten Django-Versionen (pre 1.10)
Erinnern ermöglichen Sitzungen um zu speichern
lastRequest
.Diese Lösung ist geschrieben und getestet werden und bei mir steht jetzt in meiner Website. Dieser code ist GNU-Lizenz 😉
Neue auf django 1.6 ( ... zwei Jahre später ... )
Datetime und timedelta Werte sind nur serialisierbar, wenn Sie mit der PickleSerializer. Wenn nicht, vielleicht einfach Lösung ist übersetzen datetime in unix-timestamp und zurück. Frei zu posten unterhalb dieser übersetzung.
Bearbeitet
django-session-security app bietet einen Mechanismus zur Abmeldung inaktive authentifizierte Benutzer. Werfen Sie einen Blick.