Klassischer AnsatzWie wir alle wissen, besteht aus Gründen der Kontosicherheit die Möglichkeit, die Abmeldung vom System durch direktes Schließen des Browsers oder der Registerkarte zu erzwingen, wenn der Benutzer nicht aktiv auf die Abmeldung vom System klickt: //Beim Schließen die Logout-Schnittstelle aufrufen window.onbeforeunload = function() { //Führen Sie den Ajax-Aufruf zum Abmelden aus, einfaches Beispiel $.ajax({url:"/logout"}); }; FrageDiese Methode weist schwerwiegende Probleme auf. Sie führt dazu, dass beim Aktualisieren der Seite eine Abmeldung aufgerufen wird. Viele Systeme müssen das Aktualisieren der Seite unterstützen, um die Sitzung aufrechtzuerhalten. Wie geht man damit um? Es gibt keine Lösung, aber es funktioniert: //Beim Schließen die Logout-Schnittstelle aufrufen window.onbeforeunload = function() { //Führen Sie den Ajax-Aufruf zum Abmelden aus, übergeben Sie das Flag und weisen Sie das Backend an, das Abmelden zu verzögern$.ajax({url:"/logout"},data:{delay:true}); }; Die Hintergrund-Abmeldeschnittstelle setzt einen Timer entsprechend dem Verzögerungsflag, um die Abmeldung zu verzögern. Wenn beispielsweise ein 5-Sekunden-Timer eingestellt ist, wird die Anwendungssystemsitzung tatsächlich nach 5 Sekunden abgemeldet. Gleichzeitig sollte nach dem Laden der Front-End-Seite sofort eine klare Abmeldeschnittstelle aufgerufen werden, um den Hintergrund anzuweisen, den verzögerten Abmelde-Timer zu löschen und sicherzustellen, dass der vorherige Abmeldevorgang abgebrochen wird, wenn die Seite aktualisiert wird, um die Anwendungssitzung aufrechtzuerhalten. Weitere FragenWie viel Verzögerung ist für den Hintergrund-Timer zuverlässig? Natürlich hoffen wir, dass je kürzer, desto besser, denn dies stellt sicher, dass die Sitzung nicht wiederhergestellt wird, nachdem der Benutzer den Browser schließt und die Seite erneut öffnet. Beispielsweise wird im Hintergrund ein 5-Sekunden-Timer eingestellt. Solange das Intervall zwischen dem Schließen des Browsers und dem erneuten Öffnen der Seite durch den Benutzer größer als 5 Sekunden ist, wird die Sitzung nicht wiederhergestellt, wodurch sichergestellt wird, dass der Benutzer die Anmeldeseite erneut aufruft. Wenn die Handgeschwindigkeit des Benutzers zu hoch ist und die Seite innerhalb von 5 Sekunden erneut geöffnet wird, wird die vorherige Sitzung natürlich erfolgreich aufgerufen. Dies verursacht natürlich keine ernsthaften Probleme, da ein böswilliger Benutzer den Computer, den der Benutzer verlassen hat, nicht verwenden und die Seite sehr schnell öffnen kann. Und dann? Wie viele Sekunden Verzögerung sollen eingestellt werden? Dies hängt davon ab, wann der Front-End-Code beim Laden der Seite den verzögerten Abmeldetimer löscht. Der entscheidende Punkt ist: je früher, desto besser. <html manifest=""> <Kopf> <meta http-equiv="X-UA-kompatibel" content="IE=edge"> <meta charset="UTF-8"> <meta http-equiv="Pragma" content="kein-cache"> <meta http-equiv="Cache-Steuerung" content="kein Cache"> <meta http-equiv="Läuft ab" content="0"> <Skripttyp="text/javascript"> //Um den verzögerten Abmelde-Timer so schnell wie möglich aufzurufen und zu löschen, verwenden Sie zum Aufrufen die ursprüngliche XMLHttpRequest-Methode var xhr = new XMLHttpRequest(); wenn (xhr) { xhr.open("POST", "/clearlogout", true); xhr.senden(); } </Skript> ...... Nach der obigen Verarbeitung kann der Seitenaktualisierungsvorgang unter normalen Netzwerkbedingungen sicherstellen, dass das Zeitintervall zwischen dem Aufrufen der verzögerten Abmeldung und dem Löschen der verzögerten Abmeldung sehr kurz ist. Im Allgemeinen sind 5 Sekunden ein angemessenerer Verzögerungswert. Probleme, die Aufmerksamkeit erfordern Offensichtlich muss der obige Mechanismus auf dem zweischichtigen Sitzungsmechanismus des Back-Ends basieren, da die Voraussetzung darin besteht, dass er zuerst die Beibehaltung der Sitzung beim Aktualisieren der Seite unterstützen muss. Die Oberflächenschicht ist also die Sitzung des Web-Frameworks selbst und die innere Schicht ist die Sitzung der Anwendungsschicht. Oberflächensitzungen basieren auf Cookies, während interne Anwendungssitzungen auf Hintergrund-Cache-Mechanismen oder Datenbanken basieren. Dies ist das Ende dieses Artikels zum Abmelden von einem Konto beim Schließen des Browsers mit js. Weitere Informationen zum Abmelden von einem Konto beim Schließen des Browsers mit js finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: So entfernen Sie „Enter“, „Senden“ und „Enter != Senden“ aus dem Formular
>>: MySQL-Installation mehrerer Instanzen - Boot- und Autostart-Dienstkonfigurationsprozess
Im Falle einer vollständigen Trennung von Front-E...
Inhaltsverzeichnis MySQL-Client/Server-Protokoll ...
Vorne geschrieben Ich habe kürzlich ein spezielle...
Inhaltsverzeichnis 1. Index-Grundlagen 1. Arten v...
Seien Sie nicht überrascht, wenn Sie im Bild eine ...
In diesem Artikel wird der spezifische JS-Code zu...
Wenn Sie nicht wissen, wie das System auf dem Com...
Das Kubernetes-Team hat vor Kurzem angekündigt, d...
Ich habe kürzlich mit der Remote-Entwicklungsfunk...
1 / Kopieren Sie die Webprojektdateien direkt in ...
Wenn Sie den Inhalt der Datei „source.list“ verse...
Inhaltsverzeichnis 1. Problemerkennung 2. Detaill...
Inhaltsverzeichnis 1. Über die visuelle Schnittst...
Mit Flash konnten Designer und Entwickler umfangr...
Sie müssen Inspiration haben, um eine Website zu g...