2009-09-25 10 views
5

Mam witrynę w ASP.NET. Mamy dwa rodzaje logowania 1. Użytkownicy 2. AdministratorJak zatrzymać wyświetlanie strony internetowej po wylogowaniu za pomocą przeglądarki wstecz

Jestem stoi następujący problem podczas testowania oświadczenie

Problem: Załóżmy, że loggedin przez logowania użytkownika i korzystać wszystkie strony, powiedzmy na dowolnej stronie użytkownika klikam przycisk wylogowania, przekieruje mnie na stronę logowania.

Teraz pojawia się problem, gdy korzystam z przeglądarki wstecz, pokazuje mi stronę użytkownika, ale w rzeczywistości nie powinienem widzieć tej strony po wylogowaniu.

Moja funkcjonalność jest właściwa, ponieważ jeśli kliknę na stronę po wylogowaniu, ponownie przekieruje mnie na stronę logowania, ale moim problemem jest to, że nie powinienem wylądować na stronie użytkownika za pomocą przeglądarki z powrotem po wylogowaniu. [Tak się dzieje w Google i Yahoo]

To samo dzieje się z loginem administratora.

Pomóż mi rozwiązać problemy.

Odpowiedz

1

Musisz ustawić następujące Chyba

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

Spowoduje to swoją stronę aby umieścić z powrotem także wtedy, gdy użytkownik naciśnie przycisk Wstecz, dzięki czemu możesz sprawdzić, czy nadal jest zalogowany i na wypadek, gdyby został przekierowany do innego miejsca.

+0

Gdzie powinienem pisać powyżej linii kodu? –

+0

puh nie wypróbował tego teraz, ale umieściłbym go w PageLoad of Page, gdzie trzeba sprawdzić, czy użytkownik jest zalogowany. Zasadniczo strona, która zostanie wyświetlona po kliknięciu przez użytkownika przycisku wstecz na innej stronie . – Juri

+0

Przynajmniej umieść komentarz, jeśli zgłaszasz ... – Juri

1

Musisz wyłączyć pamięć podręczną.

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

Jak się zalogować/wylogować? Właściwym sposobem na to jest zapisanie informacji o użytkowniku w sesji przy logowaniu i wyczyszczenie sesji podczas wylogowania w teście strony PageLoad, jeśli sesja zawiera ważne informacje lub nie, jeśli nie, zatrzymaj ładowanie strony. w ten sposób, gdy użytkownik wyloguje się i kliknie z powrotem sesję, powinien być pusty i nie załaduje się, a następnie można przekierować na stronę logowania. odpowiedzieć, jeśli potrzebujesz kodu

3

Problelm to strony, które można cofnąć, aby zostały zapisane w pamięci podręcznej. Możesz nakazać przeglądarce ZAWSZE pobierać strony z serwera za każdym razem.

Trzeba będzie generować wszystkie z następujących nagłówków:

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

Problem nie wszystkie przeglądarki obsługują wszystkie opcje, więc trzeba to wszystko z tych nagłówków, aby zapewnić wszystkich przeglądarek nie buforować stron .

Innym powodem, dla którego wszystkie te nagłówki są potrzebne, jest to, że w niektórych przypadkach, nawet jeśli przeglądarka przestrzega nagłówków wygasających, może istnieć błędnie skonfigurowany serwer proxy między tobą a użytkownikiem, który nadal buforuje strony.

w ASP prawdopodobnie chcesz zrobić coś takiego:

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

Zwykłem mieć ten sam problem. Używanie losowego nagłówka etag również pomaga. Tj. Taguj stronę jako nowy zasób do każdego pobrania. – user162138

+0

Dzięki, Czy możesz mi pomóc, w jaki sposób mogę wygenerować wyżej wymienione postacie? Specjalnie w ASP.NET –

+0

Mam stronę wzorcową dla mojego aspx. Link do wylogowania jest dostępny na stronie wzorcowej. Czy konieczne jest wpisanie powyższej linii kodu wewnątrz wzorca i aspx zarówno? Czy to działa, jeśli piszę je tylko na stronie wzorcowej? Co to jest właściwe podejście? –

Powiązane problemy