Domanda

Sto usando Django e jQuery per implementare le sessioni autenticate e richieste Ajax.

Ho autenticato timeout di sessione per registrare gli utenti autenticati dopo un lungo periodo di inattività sul mio sito. Alcune delle pagine del mio sito hanno un sacco di chiamate AJAX in loro che richiede all'utente di essere in una sessione autenticata. Quando un utente lascia una pagina aperta per lungo tempo e ha la sessione di auto-scaduta, tutte le chiamate AJAX fatti sarà solo fallire e mostrare un errore del browser. My Web pila (Django) restituisce un reindirizzamento il login per queste richieste AJAX, ma semplicemente presentarsi come errori a $ .ajax () (utilizzando jQuery.)

Come potrei ricaricare la pagina e inviare l'utente alla pagina di login attraverso una richiesta AJAX quando trovo che la loro sessione di autenticazione è scaduta?

È stato utile?

Soluzione

Un modo sarebbe quello di avere uno script che solo ping una pagina per vedere se non è ancora registrato, ma questo aumenterebbe il numero di richieste AJAX che avrei dovuto fare.

Un'altra opzione è quella di avere la funzione di complete $.ajax() controllare il codice di stato HTTP per l'oggetto XMLHttpRequest che viene passato in:

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

Altri suggerimenti

Semplice davvero, avere tutto ciò che lo script si sta interrogando restituire una sorta di codice di errore, forse

{'error', 'notloggedin'}

allora, tutto quello che dovete fare è controllare per questo valore nella vostra javascript. Se viene trovata, poi fare qualcosa di simile

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

per fare il reindirizzamento JavaScript alla pagina di login (cambiare il percorso se necessario)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top