2009-09-25 5 views
5

Ich habe eine Website in ASP.NET. Wir haben zwei Arten von Login 1. Benutzer 2. AdministratorWie können wir die Webseiten-Ansicht nach dem Abmelden mit dem Browser stoppen?

Ich bin vor folgendes Problem beim Testen

Problemstellung: Angenommen, ich von User-Login und surfen eingeloggt hat alle Seiten, lassen Sie auf einer beliebigen Seite Benutzer sagen Ich klicke auf Logout-Taste, es wird mich auf der Anmeldeseite umleiten.

Jetzt kommt das Problem, wenn ich Browser zurück benutze, zeigt es mir Benutzer-Seite, aber in Wirklichkeit sollte ich nicht in der Lage, diese Seite nach dem Abmelden zu sehen.

Meine Funktionalität ist richtig, denn wenn ich auf Seite klicken nach dem Abmelden es mich wieder auf Login-Seite umleiten, aber mein Problem ist, ich nicht auf Benutzerseite landen sollte Browser zurück nach dem Abmelden. [Wie in Google und Yahoo passiert]

Gleiches passiert mit Admin Login.

Bitte helfen Sie mir, die Probleme zu lösen.

Antwort

1

Sie haben die folgende Ich denke,

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

Dies bewirkt, dass Ihre Seite setzen auch drückt, wenn der Benutzer posten Mit der Zurück-Taste können Sie überprüfen, ob er noch eingeloggt ist und ihn an einen anderen Ort weiterleiten.

+0

Wo sollte ich obige Zeilen schreiben? –

+0

puh hat es jetzt nicht ausprobiert, aber ich würde es in PageLoad der Seite platzieren, wo Sie überprüfen müssen, ob der Benutzer angemeldet ist. Grundsätzlich wird die Seite angezeigt, nachdem der Benutzer auf einer anderen Seite auf die Zurück-Schaltfläche geklickt hat . – Juri

+0

Zumindest einen Kommentar, wenn Sie downvote ... – Juri

1

Sie müssen den Cache deaktivieren.

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

Wie können Sie sich anmelden/abmelden? Eine geeignete Vorgehensweise ist das Speichern der Benutzerinformationen in einer Sitzung beim Anmelden und Löschen dieser Sitzung beim Abmelden im PageLoad-Methodentest, wenn die Sitzung gültige Infos enthält oder nicht, wenn das Laden der Seite nicht gestoppt wird. auf diese Weise, wenn der Benutzer sich abmeldet und klicken Sie auf die Sitzung sollte leer sein und es wird nicht geladen, und Sie können dann auf die Anmeldeseite umleiten. antworten, wenn Sie einen Code benötigen

3

Das Problem sind die Seiten, die Sie zurück drücken können, um zwischengespeichert zu werden. Sie können Ihren Browser anweisen, IMMER die Seiten vom Server zu holen.

Sie müssen alle folgenden Header generieren:

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

Das Problem ist nicht alle Browser alle Optionen zu unterstützen, so dass Sie alle diese Header haben, um alle Browser, um sicherzustellen, nicht Ihre Seiten cachen . Der andere Grund für die Notwendigkeit all dieser Header ist, dass in einigen Fällen, selbst wenn der Webbrowser die Expires-Header berücksichtigt, ein falsch konfigurierter Proxy-Server zwischen Ihnen und dem Benutzer, der die Seiten immer noch zwischenspeichert, sein kann.

In ASP Sie wahrscheinlich so etwas wie dies tun wollen:

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

Ich hatte das gleiche Problem. Ein zufälliger Etag Header hilft auch. Dh markieren Sie die Seite als neue Ressource für jeden Download. – user162138

+0

Danke, Können Sie mir helfen, wie kann ich oben genannten Zeichen generieren? Speziell in ASP.NET –

+0

habe ich Master-Seite für meine aspx. Der Abmeldelink ist auf der Masterseite verfügbar. Ist es notwendig, über Zeile Code in Master und Aspx beide zu schreiben? Funktioniert es, wenn ich sie nur innerhalb der Masterseite schreibe? Was ist richtiger Ansatz? –