Ho un'applicazione protetta con devise e un timeout di sessione di 30 minuti. Con l'idea tutto funziona bene per la normale navigazione, se l'utente fa clic su un link quando è scaduto viene reindirizzato alla schermata di accesso con un messaggio che dice "La tua sessione è scaduta, accedi nuovamente per continuare.", Eccellente.Messaggio di timeout sessione in RoR utilizzando Devise
Tuttavia ho ajax in molti posti. Se la sessione scade e l'utente esegue un'operazione ajax, desidero lo stesso comportamento di cui sopra piuttosto che fallire silenziosamente con un errore 401 in background.
Finora ho questo codice jQuery in ogni pagina per catturare 401S e ricaricare:
$(document).ajaxError(function(e, error) {
switch(error.status) {
case 401: {
// unauthorised (possible timeout)
location.reload();
break;
}
funziona abbastanza bene, ma c'è un problema fastidioso:
Perché i colpi richiesta AJAX elaborare prima , quando la mia applicazione ricarica la pagina, vengo indirizzato alla pagina di accesso, ma non vedo il messaggio di timeout, vedo la persona non autenticata "È necessario accedere o registrarsi prima di continuare." Messaggio.
Esiste un modo per garantire che nella seconda richiesta di installazione venga ancora visualizzato il messaggio di timeout?