Frage

Ich verwende Django und JQuery, um authentifizierte Sitzungen und AJAX -Anfragen zu implementieren.

Ich habe Sitzungszeitüberschreitungen authentifiziert, um authentifizierte Benutzer nach einer langen Inaktivität auf meiner Website zu protokolliert. Auf einigen Seiten auf meiner Website verfügen viele Ajax -Anrufe, bei denen der Benutzer in einer authentifizierten Sitzung sein muss. Wenn ein Benutzer eine solche Seite für lange Zeit öffnen und die Sitzung automatisch abgestimmt haben, fehlschlagen alle AJAX-Anrufe einfach und zeigen einen Browserfehler an. Mein Webstack (Django) gibt eine Weiterleitung zurück, um sich für diese AJAX -Anfragen anzumelden, aber sie werden nur als Fehler für $ .ajax () (mit jQuery) angezeigt.

Wie könnte ich die Seite neu laden und den Benutzer über eine AJAX -Anfrage an die Anmeldeseite senden, wenn ich finde, dass ihre Auth -Sitzung abgelaufen ist?

War es hilfreich?

Lösung

Eine Möglichkeit wäre, ein Skript zu haben, das nur eine Seite angeht, um festzustellen, ob es noch angemeldet ist oder nicht, aber dies würde die Anzahl der AJAX -Anfragen erhöhen, die Sie tun müssen.

Eine andere Möglichkeit ist, die zu haben complete Die Funktion von $.ajax() Überprüfen Sie den HTTP -Statuscode im XMLHTTPrequest -Objekt, das in:

$.ajax({..., complete = function(xhr, textStatus){
    if(xhr.status > 300 && xhr.status < 400) //you got a redirect
        window.location.href = '/login/';
    ...
    }, ...);

Andere Tipps

Einfach wirklich, haben Sie vielleicht das Skript, das Sie abfragen, vielleicht einen Fehlercode zurück.

{'error', 'notloggedin'}

Dann müssen Sie nur nach diesem Wert in Ihrem JavaScript überprüfen. Wenn es gefunden wird, dann tun Sie so etwas wie

window.location.href = '/login/';

Damit das JavaScript auf die Anmeldeseite weiterleitet (nach Bedarf den Pfad ändern)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top