5 Stimmen

Wie würde ich AJAX verwenden, um festzustellen, ob die Sitzung des Benutzers abgelaufen ist, und sie dann auf die Anmeldeseite zurück?

Wie könnte ich in der folgenden Situation AJAX einsetzen, um zu prüfen, ob die Sitzung noch aktiv ist, und dann den Benutzer zur Anmeldeseite zurückbringen?

  1. Der Benutzer meldet sich an und beginnt zu arbeiten
  2. Der Benutzer verschwindet für 10 Minuten und die Sitzung wird abgebrochen
  3. Der Benutzer kehrt zu seinem Computer zurück und ist immer noch auf dem Bildschirm, auf dem er auf dem er vor 10 Minuten war
  4. Der Nutzer reicht seine Arbeit ein, abers wird zum Anmeldebildschirm zurückgebracht (durch meine bestehende Prüfung des Sitzungsstatus) und die Änderungen werden nicht beibehalten

Idealerweise, was ich bin nach ist eine Möglichkeit, den Sitzungsstatus alle 1 Minute zu überprüfen, um zu sehen, wenn der Benutzer im Leerlauf ist. Wenn sie im Leerlauf sind und die Sitzung kurz vor dem Ablauf steht, würde ich ihre Änderungen vorübergehend speichern und dann, wenn die Sitzung abläuft, würde ich automatisch die Seite zum Anmeldebildschirm ändern, bevor der Benutzer aus dem Leerlauf zurückkehrt.

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

4voto

3Dave Punkte 27742

Das meiste davon kann serverseitig gehandhabt werden.

Bei jeder serverseitigen Benutzeraktivität - Laden einer Seite, Ajax-Aufruf, was auch immer - setzen Sie eine Sitzungsvariable

Session["last_activty"]=DateTime.Now;

Überprüfen Sie in Ihren AJAX-Aufrufen und beim Laden der Seite (dies könnte in einer Masterseite/verschachtelten Masterseite für Seiten, die eine Authentifizierung erfordern, geschehen) (Pseudocode)

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

Wenn das Laden der Seite oder die Webmethode/Webdienst-Methode auf der Grundlage der obigen Angaben feststellen, dass der Benutzer eine Zeitüberschreitung hat, wird entweder

a) Weiterleitung zur Anmeldeseite (serverseitig), oder

b) einen Statuscode an Ihren Ajax-Aufrufer zurückgeben, der eine Weiterleitung oder die Anzeige eines Anmeldedialogs bewirkt.

ANMERKUNG : Hüten Sie sich vor der Verwendung echter Sitzungsvariablen, da sie in geclusterten Serverumgebungen in der Regel nicht gut/gar nicht funktionieren. Ein besserer Ort für diese Art von Dingen ist in Ihrer Datenbank.

table Users
.ID
.last_activity datetime
.logged_in - calculated column which returns if GetDate()-LastActivity > 10 minutes.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X