2009-04-29 7 views
1

Kann der Benutzer benachrichtigt werden, dass die Sitzung abgelaufen ist? Kann der Browser als Server fungieren und solche Benachrichtigungen erhalten?Client über abgelaufene Sitzung benachrichtigen - Webprogrammierung

Eine Lösung wäre, JavaScript zu generieren, das auf der Clientseite countdown ausführt und den Client am Ende benachrichtigt, aber ich bin esteterst, wenn es möglich ist, es auf die erste Art zu tun?

Und was sind die Konsequenzen der ersten Annäherung? Gibt es Sicherheitsbedenken?

Was wäre eine mögliche Implementierung in Django, zum Beispiel?

+2

Persönlich würde ich es lieber, wenn Sie gerade nicht meine Sitzung ablaufen, während ich irgendwo eine Seite geöffnet habe. Sie können JavaScript "Pings" verwenden, um das auch zu erreichen ... – Shog9

Antwort

1

Sie könnten JavaScript in regelmäßigen Abständen vom Server nach Benachrichtigungen fragen lassen (z. B. alle 30 Sekunden) und XMLHTTPRequest verwenden, um eine URL zu überprüfen. Wenn die Zeitüberschreitung der Sitzung überschritten wird, kann der Server etwas unter der URL speichern, die darauf hinweist, und dann kann eine Benachrichtigung angezeigt werden. So implementiert Stackoverflow die Benachrichtigungen, dass bereits jemand eine Frage beantwortet hat, wenn Sie gerade eine Antwort verfassen.

0

Sie möchten vielleicht comet betrachten, obwohl ich denke, ein Javascript-Timer wäre eine viel bessere Lösung, weniger wahrscheinlich zu brechen, und einfacher zu implementieren.

Ich kann mir keine Auswirkungen auf die Sicherheit vorstellen, da Sie nur eine Ablaufbenachrichtigung bereitstellen und in diesem Schritt keine Authentifizierung vornehmen.

0

Sie suchen nach einer Art von comet-Typ Sache. Der einfachste "Server-Push", den Sie tun können, ist das Abfragen des Servers.

0

Tatsächlich gibt es in Django kein serverseitiges Ablaufdatum, wenn Sie Dateisystem oder Datenbankmodul verwenden => ist es Ihre Client-Cookie-Session-ID, die abläuft. Andernfalls können Sie, wenn Sie eine cache-basierte Sitzung verwenden, den Cache-Ablauf auf einen höheren Wert als den Sitzungs-Cookie-Ablauf setzen.

Dann einfach ein Cookie ohne Ablauf deklarieren, um den Client-Browser bei der Anmeldung zu kennzeichnen, und überprüfen Sie auf jeder Seite die Session-ID: Wenn es keine Session-ID-Cookie, aber Ihre "Cookie-Flag" ist die Sitzung abgelaufen. Es besteht keine Notwendigkeit, den Server zu überprüfen.

Verwandte Themen