Impedire agli utenti del sito Web di utilizzare il proprio pulsante Indietro per accedere alle schermate memorizzate nella cache dopo la disconnessione?

1

Ho una webapp legacy Java (Spring 3.1 MVC, legacy servlest e JSPs) che ho modificato per disconnettere l'utente dopo aver cliccato su un link esterno per lasciare il sito web.

L'ultima schermata / le ultime su cui è stato attivato vengono salvate nella cache del browser, consentendo loro di visualizzare alcuni dati premendo il pulsante Indietro.

Potrei inserire intestazioni no-cache in questi schermi, e funziona, ma il sito è stato progettato male con moduli a più pagine, alcuni con una schermata dei risultati che fa richieste di post per arrivare a un altro schermo.

Se queste schermate non sono memorizzate nella cache, un utente che preme il pulsante Indietro si troverà su una pagina vuota andando avanti e indietro lasciandolo da nessuna parte senza altra scelta, eccetto il login di nuovo. Un casino più grande.

A corto di riprogettazione di un sito c'è altro che posso fare per impedire all'utente di usare il suo pulsante Indietro, dopo aver effettuato il logout per accedere alle schermate memorizzate nella cache?

Ho provato a fare in modo che l'utente passasse a una schermata di reindirizzamento statico dopo aver effettuato il logout nella speranza che sarebbe stato rimandato all'URL esterno quando si utilizzava il pulsante Indietro, ma almeno due browser non sembrano essere in cache o navigare verso tali pagine.

Qualsiasi idea sarebbe gradita.

Sono in grado di utilizzare javascript e il codice lato server.

Anche se non riesco a risolvere questo problema, potrei imparare qualcosa per il futuro

Grazie

Steve

    
posta Steve 17.07.2013 - 15:55
fonte

2 risposte

2

Qualsiasi controllo sul lato utente non può sostituire i controlli sul server. Se il tuo server può soffrire di richieste con dati obsoleti (utente disconnesso o qualcosa del genere), fare trucchi con la cronologia del browser dell'utente non è una soluzione al problema, ma solo polvere negli occhi.

Inoltre, l'utente può salvare la pagina e caricarla successivamente dal file. Alcuni browser e / o estensioni consentono persino di salvare contenuto non statico (generato da JavaScript dopo il caricamento della pagina).

    
risposta data 17.07.2013 - 20:46
fonte
0

Quindi la pagina non viene memorizzata nella cache ma l'utente ha ancora una cronologia delle pagine che può "indietro" il pulsante a cui vengono visualizzate solo pagine vuote? Presumo che se l'utente effettua una richiesta al server, lo reindirizzerà a una pagina di accesso.

Potrebbe essere più semplice piuttosto che rifiutare di memorizzare nella cache le pagine, per consentire il caching ma a) per garantire che i moduli non possano essere nuovamente inviati quando sono stati inviati una volta eb) per utilizzare un controllo Javascript contro i cookie nel browser quando pagina viene caricata, per assicurarsi che abbiano una sessione corrente.

Se vuoi essere elegante, puoi usare un po 'di ajax per verificare l'ID della sessione con il server (supponendo che tu non abbia appena programmato la sessione quando hanno lasciato la pagina) ma potresti anche essere in grado di impostare un cookie "disconnesso" quando si disattiva la sessione e si controlla solo il valore.

Puoi anche usare Javascript per interagire con la cronologia del browser, ma questo è un po 'nuovo - MDN ha il lowdown. Non vorrei dire se potresti fare qualcosa per regolare la cronologia del browser al logout in modo che l'utente possa essere rinviato a qualche parte più amichevole, ma potrebbe valere la pena esaminando.

    
risposta data 17.07.2013 - 18:19
fonte

Leggi altre domande sui tag