Laden...

Sessionvariablen gelöscht / Back Button

Erstellt von samuel83 vor 18 Jahren Letzter Beitrag vor 16 Jahren 3.611 Views
S
samuel83 Themenstarter:in
77 Beiträge seit 2005
vor 18 Jahren
Sessionvariablen gelöscht / Back Button

Hallo Leute nochmals ich,

Ich arbeite mit Sessions und versuche so auch zu verhindern, dass man nach einem logout nochmals auf die seiten zurück springen kann (ähnlich e-banking)

folgender code lösche die session variablen beim logout:

//Sessionvariablen loeschen
Session.RemoveAll();
Session.Abandon();

im page load ist folgender code, damit bei einem zurückspringen (über back knopf) nicht die seite angezeigt wird und direkt auf die login seite weitergeleitet wird. hier der code:

if(Session["username"] == "" || Session["username"] == null)
{
	Response.Redirect("login.aspx");
}

Komischerweise funktioniert es bei einigen seiten und bei einigen nicht....

Hat da jemand eine bessere lösung? / ansatz?

gruss samuel

4.506 Beiträge seit 2004
vor 18 Jahren

Hallo samuel83,

schau mal in der Hilfe nach 'Session.Abandon' dort findest Du sehr viele Antworten zu diesem Thema.

Danke und Gruß
Norman-Timo

A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”

S
samuel83 Themenstarter:in
77 Beiträge seit 2005
vor 18 Jahren

Aber das ist ja gar nicht das Problem.

Ich meinte ja nur was an meiner logik nicht stimmt??? --> fehler gibt es in der art keine nur das die if abfrage umgangen wird

gruss samuel

1.130 Beiträge seit 2005
vor 18 Jahren

Grunsätzlich sind Sessiones Variablen vom typ object, d.h. Vergleiche wie

Session["bla"] == ""

machen keinen Sinn. Richtig wäre:

Session["bla"].ToString() == ""

Nun zu Deinem Problem:

Nach einen Session.Abandon() bzw. Session.RemoveAll() kannst Du per == null überprüfen ob die Session Variable noch vorhanden ist.

Du if Abfrage

if( Session["bla"] == null)

wäre also korrekt. Betätigst Du in Deinem Fall vielleicht den Zurück-Buttons des Browsers, so dass die Seite aus dem Browsercache geladen wird?

S
samuel83 Themenstarter:in
77 Beiträge seit 2005
vor 18 Jahren

Hallo Kai

genau so eine Antwort wollte ich hören. ich benutze in der tat den zurück button des browsers. und ja genau ich vermute auch das die seite aus dem cache geladen wird. wie kann ich denn das gezielt verhindern. gibt es da eine möglichkeit ala cache="false" im registertag oder so?

interessanterweise werden nur seiten angezeigt (beim betätigen des back buttons) welche keine formulare besitzen, also pure text und link bild etc. seiten..

gruss

4.506 Beiträge seit 2004
vor 18 Jahren

Hallo samuel83,

entschuldigung, da hab ich Deine Frage tatsächlich falsch verstanden. Es gibt die Möglichkeit, dass Du in Deinem HTML-Header eine Anweisung No-Cache machst.

Das siehst Du in einem Beispiel hier:

CodeAve - HTML No Cache

Ich kann mir aber vorstellen, dass das keine 100%ige Lösung für ALLE Browser auf der Welt ist, das musst Du ausprobieren.

Gruß
Norman-Timo

A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”

M
9 Beiträge seit 2005
vor 17 Jahren

Hi,

das Caching kann man auch in der IIS-Verwaltung -> HTTP-Header -> Ablaufdatum des Inhalts aktivieren -> Sofort ablaufen einstellen.

Gruß
Markus

B
483 Beiträge seit 2005
vor 16 Jahren

Hallo,
ich habe eine ähnliche Frage.

Wie ist es möglich Caching so lange zu erlauben, bis eine bestimmte Session-Variable belegt ist?
Das heißt solange bis man sich nicht ausloggt, darf man Zurück-Button des Browsers benutzen und danach soll kein Caching mehr möglich sein, wie zum Beispiel Mailverwaltung bei www.web.de .

Mit freundlichen Grüssen
und vielen Dank voraus,
Boris

5.941 Beiträge seit 2005
vor 16 Jahren

Hallo Boris

Ja, sofern du die Cache Einstellungen nicht im IIS sondern per Code setzt.
Die Session abfragen und per Code die Caching Einstellungen ändern.

Gruss Peter

--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

B
483 Beiträge seit 2005
vor 16 Jahren

Hallo Peter,
vielen Dank!
Wie mache ich das?

 protected void Page_Load(object sender, EventArgs e)
        {
          
            if (Session["login"] == null)
            {
                Response.Cache.SetCacheability(HttpCacheability.NoCache);
                Page.Response.Redirect("Login.aspx" + Request.Url.Query, true);

                return;
            }
}

Bringt mir gar nicht.

Gruss,
Boris

5.941 Beiträge seit 2005
vor 16 Jahren

Hallo Boris

Du musst die Cache Einstellung natürlich in dem Request senden, der nicht gecacht werden soll.
Bei dir also die Login.aspx

Gruss Peter

--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011