2009-09-25 13 views
5

Sto avendo sito web in ASP.NET. Abbiamo due tipi di accesso 1. Utenti 2. amministratoreCome possiamo smettere di Web View pagina dopo signout utilizzando il browser di nuovo

Sto affrontando seguente problema durante i test dichiarazione

Problema: Supponiamo che io loggedin da login utente e navigare tutte le pagine, per non dire in qualsiasi pagina di utente clicco sul pulsante di logout, mi reindirizzerà alla pagina di accesso.

Ora il problema viene quando uso del browser di nuovo, mi mostra la pagina dell'utente, ma in vero non dovrei in grado di visualizzare la pagina dopo il logout.

La mia funzionalità è corretta perché se clicco sulla pagina dopo il logout mi reindirizzerà di nuovo alla pagina di accesso, ma il mio problema è che non dovrei atterrare sulla pagina utente utilizzando il browser dopo il logout. [Come accade in Google e Yahoo]

stesso sta accadendo con Admin login.

Prego mi aiuta a risolvere i problemi.

risposta

1

è necessario impostare il seguente immagino

Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1)); 
Response.Cache.SetValidUntilExpires(false); 
Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches); 
Response.Cache.SetCacheability(HttpCacheability.NoCache); 
Response.Cache.SetNoStore(); 

Questo farà sì che la tua pagina di inviare indietro anche quando l'utente preme il pulsante Indietro e così puoi verificare se è ancora loggato e nel caso in cui lo reindirizzi in qualche altro posto.

+0

Dove devo scrivere sopra le righe di codice? –

+0

puh non l'ho provato ora, ma lo posizionerei nel PageLoad della pagina in cui è necessario verificare se l'utente ha effettuato l'accesso. Fondamentalmente la pagina che verrà visualizzata dopo che l'utente fa clic sul pulsante Indietro su un'altra pagina . – Juri

+0

Almeno inserire un commento se si è a valle ... – Juri

1

È necessario disattivare la cache.

public void Page_Load() 
{ 
Response.Cache.SetCacheability(HttpCacheability.NoCache) 
... 
} 
0

Come si effettua il login/logout? un modo corretto di fare questo è quello di salvare le informazioni utente in una sessione al login e chiaro che la sessione al logout nel metodo di prova PageLoad di ogni pagina se la sessione ha informazioni valide o no, se non arrestare il caricamento della pagina. in questo modo, quando il logout utente e il clic sulla sessione indietro devono essere vuoti e non verranno caricati e sarà quindi possibile reindirizzare alla pagina di accesso. rispondi se hai bisogno di codice

3

Il nodo è le pagine che puoi premere indietro per essere stato memorizzato nella cache. Puoi istruire il tuo browser a scaricare SEMPRE le pagine dal server ogni volta.

Avrete bisogno di generare tutte le seguenti intestazioni:

Pragma: no-cache 
Cache-Control: max-age=1 
Expires: Tue, 1 May 1985 01:10:00 GMT 

Il problema non è tutti i browser supportano tutte le opzioni in modo da avere a includere tutte queste intestazioni per garantire tutti i browser non cache le pagine .

L'altro motivo per cui sono necessarie tutte queste intestazioni, è che in alcuni casi, anche se il browser Web rispetta le intestazioni di scadenza, può esserci un server proxy configurato in modo errato tra te e l'utente che sta ancora memorizzando nella cache le pagine.

in ASP, probabilmente si vuole fare qualcosa di simile:

public void Page_Load() { 
    Response.ExpiresAbsolute = DateTime.Now.AddDays(-1d); 
    Response.Expires = -1500; 
    Response.CacheControl = "no-cache"; 
    Response.Cache.SetETag(randomString); 
} 
+1

Avevo lo stesso problema. Anche l'uso di un header etag casuale aiuta. Tagga la pagina come una nuova risorsa per ogni download. – user162138

+0

Grazie, Potete aiutarmi, come posso generare i caratteri sopra menzionati? Specialmente in ASP.NET –

+0

ho la pagina principale per il mio aspx. Il collegamento alla disconnessione è disponibile nella pagina principale. È necessario scrivere sopra la riga di codice all'interno di master e aspx entrambi? Funziona se li scrivo solo nella pagina principale? Qual è l'approccio giusto? –

Problemi correlati