Domanda

Ho un classico sito Web ASP che utilizza variabili di sessione per memorizzare lo stato di accesso, ad es. userid, isloggedin, ecc. Al logout, le variabili di sessione vengono ripristinate e viene chiamato Session.Abandon () seguito da un reindirizzamento alla pagina di accesso. In IE7 ho notato che dopo il logout posso digitare un URL precedentemente visitato e vedere quella che sembra essere una versione cache del suo stato prima del logout. Premendo ctl-f5 verrà ricaricato nuovamente dal server e reindirizzato alla pagina di accesso. Questo è il comportamento che voglio verificarsi anche se url viene digitato senza ctl-f5. Qualcuno sa come ottenere questo comportamento?

È stato utile?

Soluzione

imposta le intestazioni senza cache in modo che le pagine non vengano prima memorizzate nella cache. vedi:

http://support.microsoft.com/kb/234067

Altri suggerimenti

Penso che la risposta di mkoryak (usando le intestazioni senza cache) sembri la migliore. Se vuoi che determinate pagine vengano visualizzate solo quando un utente ha effettuato l'accesso, il modo migliore è di istruire il browser a non semplicemente memorizzare nella cache la pagina. Inoltre, schemi come la modifica dei cookie e l'utilizzo di JavaScript determinano lo stato di accesso sul client semplicemente reinventando la ruota.

Se vuoi sfruttare un po 'di cache e la tua pagina non è qualcosa che si aggiorna costantemente, un buon compromesso è impostare l'intestazione Response.Expires su un valore che ritieni appropriato (è misurato in minuti credo).

Ho avuto un problema simile in precedenza, ma ogni volta che ho fatto clic su un collegamento in quella pagina, mi viene chiesto di accedere nuovamente.

Puoi provare a ripristinare sessionID = " " oppure sessionID = " XYZ " e rendi XYZ qualcosa che il tuo codice ignora all'uscita.

Puoi anche provare a impostare le intestazioni senza cache.

Potresti inviare no-cache, ma questo è un hit delle prestazioni solo per ottenere quello che vuoi. Preferisco il suggerimento di Liams e assicurarsi che tutto ciò che fai da quella pagina richieda che tu abbia effettuato l'accesso, in questo modo nessuno può fare nulla che non dovrebbe. E se fosse un sistema di posta elettronica o simile, le persone "potrebbero" visualizzare le e-mail di altre persone che sono memorizzate nella cache, in quei casi quindi sì, non memorizzare nella cache informazioni sensibili è la strada da percorrere (ad esempio, non è possibile memorizzare nella cache le pagine HTTPS per impostazione predefinita).

Potresti anche includere un po 'di javascript nella testa che potrebbe verificare l'esistenza di un "accesso" " biscotto. Questo verrebbe eseguito ogni volta che caricano la pagina, se non esiste alcun cookie, JS potrebbe reindirizzarti alla pagina di accesso. Non sicuro al 100% ma abbastanza buono. La tua pagina di disconnessione dovrebbe cancellare questo cookie e la pagina di accesso lo imposta.

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