Wie würde ich AJAX verwenden, um festzustellen, ob die Sitzung des Benutzers abgelaufen ist und sie dann auf die Login-Seite zurückkehren?

StackOverflow https://stackoverflow.com/questions/1638171

Frage

In der folgenden scenaio, wie könnte ich nutzen AJAX zu überprüfen, ob die Sitzung, wenn noch aktiv ist und dann wieder den Benutzer auf die Login-Seite?

  1. Der Benutzer meldet sich und beginnt mit der Arbeit
  2. Der Benutzer verschwindet für 10 Minuten und die Sitzung abläuft
  3. Der Benutzer kehrt zu ihrem Computer und ist immer noch auf dem Bildschirm waren sie auf 10 Minuten vor
  4. Der Benutzer trägt ihre Arbeit, buts erhalten zum Anmeldebildschirm zurück (durch meine bestehende Sitzungsstatus-Prüfung) und werden die Änderungen nicht beibehalten

Im Idealfall bin ich nach dem, was ist eine Möglichkeit, den Sitzungsstatus all 1 Minute zu überprüfen, um zu sehen, ob der Benutzer frei ist. Wenn sie im Leerlauf und die Sitzung ist fast abgelaufen, würde ich ihre Änderungen vorübergehend speichert aus und dann dann, wenn die Session nicht auslaufen, würde ich die Seite automatisch zum Anmeldebildschirm ändern, bevor der Benutzer kehrt von Leerlauf zu sein.

Ist es auch möglich, dies zu tun, ohne setTimeOut ()?

War es hilfreich?

Lösung

Die meisten, wenn dies gehandhabt serverseitige werden.

Immer, wenn es serverseitige Benutzeraktivität - Seite zu laden, Ajax-Aufruf, was auch immer, ein Session-Variable gesetzt

Session["last_activty"]=DateTime.Now;

Ihre AJAX Anrufe und Seitenlade (könnte dies in einer Masterseite / geschachtelte Masterseite für Seiten, die eine Authentifizierung erfordern), überprüfen (Pseudo-Code)

if (DateTime.Now-DateTime.Parse(Session["last_activity"]) > 10 minutes)
  Session["logged_in"]=false;

Wenn die Seite zu laden oder Webmethod / Webservice-Methode bestimmt auf der oben aus, dass der Benutzer aus abgelaufen ist, entweder

a) Umleitung auf die Login-Seite (Server-Seite) oder

b) geben einen Status-Code in Ihre Ajax-Anrufer, die eine Umleitung oder Anzeige eines Login-Dialog führen wird.

Hinweis : Vorsicht vor Verwendung von realem Session-Variablen, da sie nicht zu arbeiten, sind in der Regel gut / gar in Cluster-Server-Umgebungen. Ein besserer Ort für diese Art der Sache ist, in Ihrer Datenbank.

table Users
.ID
.last_activity datetime
.logged_in - calculated column which returns if GetDate()-LastActivity > 10 minutes.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top