Wie kann ich überprüfen, um sicherzustellen ein Fenster aktiv verwendet wird, und wenn nicht die Endbenutzer aufmerksam machen, dass sie im Begriff sind, abgemeldet werden?

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

  •  01-07-2019
  •  | 
  •  

Frage

für meine Firma auf ein neues Backend-System arbeiten, und einer ihrer Anträge ist für ein Fenster gesperrt werden nach unten und für den Benutzer zum Login-Bildschirm gesendet werden, wenn sie es für zu lange im Leerlauf lassen.

Ich denke, ich dies mit JavaScript tun würde von den Hörern zu Klicks, Mausbewegungen und Tasten-ups Anbringen aber ich mache mir Sorgen mit anderen Skripten zu verwirren.

Irgendwelche Vorschläge?

War es hilfreich?

Lösung

Zum einen für diese wirksam zu sein, müssen Sie am Ende dieser Leerlaufzeit auf dem Server vornehmen, werden Sie sicher, dass Benutzer abgemeldet. Sonst nichts, was man auf der Client-Seite tut, ist wirksam. Wenn Sie sie auf eine Login-Seite zu senden, können sie nur die Zurück-Taste klicken.

Zweitens ist die herkömmliche Art und Weise, dies zu tun ist, ein „Meta-Refresh“ -Tag zu verwenden. Addiert man diese auf der Seite:

<meta http-equiv="refresh" content="900;url=http://example.com/login"/>

wird sie auf die Anmeldeseite nach 15 Minuten (900 Sekunden) senden. Das wird sie schicken es, auch wenn sie etwas auf der Seite tun. Dabei spielt es keine Aktivität erkennen. Er weiß, wie lange die Seite im Browser gewesen. Dies ist in der Regel gut genug, weil die Leute 15 Minuten nicht in einer Seite zu füllen (stackoverflow.com ist eine bemerkenswerte Ausnahme, ich denke.)

Wenn Sie wirklich Aktivität müssen erkennen, auf der Seite, dann denke ich, Ihr erster Instinkt ist richtig. Sie gehen zu müssen, um Event-Handler mehrere Dinge hinzuzufügen. Wenn Sie sich Sorgen um mit anderen Scripting zur Validierung oder andere Dinge verwirren, sollten Sie Ereignishandler programmatisch auf das Hinzufügen anstatt Inline aussehen. Das heißt, statt mit

<input type="text" onClick="doSomething;">

Besuchen Sie das Objektmodell direkt mit

Mozilla way:   element.addEventListener('click' ...)
Microsoft way: element.attachEvent('onclick' ...) 

und dann stellen Sie sicher, dass Sie an die Ereignisse passieren, nachdem Sie sie so vorhandenen Code immer noch tut, was (Validierung?) Erhalten sie tun soll.

http://www.quirksmode.org/js/introevents.html hat eine gute Schreib auf, wie dies zu tun.

-
bmb

Andere Tipps

Sie konnte es einfach ein Protokoll auszukommen, wenn der Benutzer Seiten ändert sich nicht nach so langer Zeit. Das ist, was der Engel Learning Courseware-System zu tun scheint.

Das andere Problem, das Sie konfrontiert werden, ist jedoch, dass einige Benutzer JavaScript deaktiviert werden.

Wenn Sie Code auf der Seite platzieren können dann gibt es zwei Dinge:

  • Javascript Suche Mausbewegungen, Tastaturaktivitäten und Scrollen.
  • Setzen Sie einen Meta-Refresh-Tag im HTML -, wenn sie für mehr als X Minuten auf dieser Seite sind es automatisch zur Login-Seite umleiten wird
  • .

Wenn Sie nur Code auf dem Server setzen können:

  • Halten Sie eine Sitzung (Cookie oder andere), die, wie lange zwischen Seitenänderungen nachverfolgt. Wenn eine Seite angefordert wird, länger als X Minuten seit der letzten Anforderung, dient nicht der angeforderte Seite, die Login-Seite dienen.

Sie können zusammen, um die Meta-Refresh und Server-Techniken verwenden. Die aufgefrischte Seite geht an einen „Ihre Sitzung wird, abzulaufen hier klicken um zurück zu gehen und weiterhin innerhalb von 30 Sekunden arbeiten“.

Die Schaltfläche klicken sie Ihre Server-Sitzung zurückgesetzt und führt eine Seite zurück Funktion so alle Daten, die sie (in den meisten Browsern) hatten wird noch da sein. Benötigt Javascript auf der Seite aktualisieren, aber keine auf der Originalseite - nur ein Meta-Refresh. Javascript Aktivität Tracking würde allerdings das Beste sein.

-Adam

In dem Ladeereignis für die Seite, die Sie setTimeout verwenden können, um eine Funktion zu feuern den Benutzer warnt, dass sie werden protokolliert werden, wenn sie die Seite nicht aktualisieren.

Mit 5 Minuten Sitzung Timeouts Sie Warnungen nach 4 Minuten tun konnte:

setTimeout(timeoutWarning, 240000);

function timeoutWarning() {
  if(confirm('You have been idle for a while.  Would you like to remain logged in?'))
    window.location.refresh();
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top