2010-03-29 11 views

Antwort

29

Werfen Sie einen Blick auf die session middleware und seine Einstellungen. Insbesondere diese beiden:

SESSION_COOKIE_AGE

Default: 1209600 (2 Wochen, in Sekunden)

Das Alter der Session-Cookies, in Sekunden.

SESSION_SAVE_EVERY_REQUEST

Default: False

Ob die Sitzungsdaten auf jede Anfrage zu speichern. Wenn dies Falsch (Standard) ist, dann werden die Sitzungsdaten nur gespeichert, wenn sie geändert wurden - das heißt, wenn einer ihrer Wörterbuchwerte zugewiesen oder gelöscht wurde.

eine niedrige SESSION_COOKIE_AGE Einstellung und SESSION_SAVE_EVERY_REQUEST Einschalten sollte „gleitende“ Ablauf erstellen arbeiten.

+0

Dank McNearney. Heute habe ich mein Problem mit Ihrem Post gelöst. –

2

Wenn Sie das Sitzungscookie-Alter in der Middleware der Django-Sitzung festlegen, wird nur die Verfallszeit im Header des Set-Cookies festgelegt, der an den Browser zurückgegeben wird. Es ist nur die Browserkonformität mit der Ablaufzeit, die das "Abmelden" erzwingt.

Abhängig von Ihren Gründen für das Abmelden im Leerlauf halten Sie die Einhaltung der Ablaufzeit durch den Browser möglicherweise nicht für ausreichend. In diesem Fall müssen Sie die Session-Middleware erweitern, um dies zu tun.

Zum Beispiel können Sie eine Ablaufzeit in Ihrer Session-Engine speichern, die Sie mit Anfragen aktualisieren. Abhängig von der Art des Datenverkehrs zu Ihrer Site möchten Sie möglicherweise nur einmal in X Sekunden auf das Sitzungsobjekt zurückschreiben, um übermäßige Schreibvorgänge zu vermeiden.

+0

Das scheint in Django 1.4 nicht zu stimmen. Der Set-Cookie-Header, den ich vom Server zurückbekomme, sieht folgendermaßen aus: 'Set-Cookie = csrftoken = ... sessionid = 365ede0dd7038cc70796f9f724bc21b6; httponly; Pfad =/'Es hat keine Ablaufzeit, daher muss der Ablauf auf der Serverseite erzwungen werden. – Nathan

+0

Schön, dass die Session-Middleware verbessert wurde. Ich bin mir nicht sicher, was ich mit dieser Antwort tun soll, die zu der Zeit genau war. – MattH

+0

Ich denke, es ist in Ordnung, Ihre Antwort so zu lassen, wie sie ist, weil sie zum Zeitpunkt des Schreibens korrekt war. – Nathan

Verwandte Themen