2009-03-20 11 views
5

Quando si utilizza l'appartenenza asp.net e si ha il tag [Autorizza] su un controller/Azione, a volte quando si torna da un caffè/una passeggiata qualunque, sei stato disconnesso dal sito. Quando si fa clic su un pulsante o collegamento che richiama una chiamata Ajax, l'html restituito non è quello richiesto ma la schermata di accesso, che viene quindi visualizzata in qualche punto della pagina (se si utilizza $ ("segnaposto"). Html (risultato)).Schermata di accesso in ajax risultato - Asp.net Mvc

È comunque possibile rilevare questo in jQuery? Come è legittimo, non si ottiene un errore, ma non è qualcosa che si vuole avere di corso.

risposta

6

Una cosa che si può fare è il rilevamento del timeout della sessione lato client. Imposta un timer che scadrà poco prima della scadenza della sessione effettiva. Chiedi al timer di visualizzare una finestra di dialogo che indica che la sessione sta per scadere e consentire all'utente di rinnovarla (inviare una richiesta AJAX per aggiornare il timer di sessione). Avere un altro timer nella finestra di dialogo che scadrà prima che scada il tempo rimanente sulla sessione effettiva. Se questo timer viene attivato, reimpostare l'href della pagina sull'URL di logout e registrare l'utente. Ovviamente, i timer devono essere resettati dall'attività dell'utente nella pagina - richieste di ajax, ecc.

6

L'approccio di timeout della sessione lato client di tvanfosson funziona molto bene, in realtà - Sono stato impressionato da diversi siti che I ' Sono tornato dopo pranzo e ho scoperto che si sono reindirizzati automaticamente alla pagina di accesso.

Un altro approccio potrebbe essere la seguente:

si invia una richiesta Ajax per (diciamo)/account/dettagli, ma il cookie di login è scaduto, quindi non ti è permesso di vedere che; il controller ritorna/Sicurezza/Login.

Se il controller restituisce la vista di accesso al posto della pagina richiesta, avete considerato l'impostazione del codice di risposta per 401 Not authorized invece di 200 OK?

Dovresti quindi modificare il tuo callback Ajax per ispezionare il codice di stato della risposta Ajax, e se si tratta di un 401 Non autorizzato, puoi rispondere di conseguenza - reindirizzare alla pagina di accesso, mostrare una finestra di accesso pop-up , o solo un messaggio di errore che dice "mi dispiace, è necessario accedere nuovamente"

Problemi correlati