Avatar billede repsak Nybegynder
19. oktober 2005 - 11:22 Der er 10 kommentarer og
1 løsning

Slette sessions "rigtigt"

Hej,

jeg har lavet et IsLoggedIn-flag i en Session:
Session["LoggedÍn"] = true;

når jeg logger ud, skriver jeg
Session.Abandon();

MEN, hvis jeg trykker på IE's tilbageknap så kommer jeg ind på siden igen. Hvordan får jeg siden til at expire/ eller hvordan sikrer jeg at ovenstående ikke kan lade sig gøre?

/Kasper
Avatar billede agertoft Nybegynder
19. oktober 2005 - 11:25 #1
Hvis du har lavet en Session.Abandon() på den er jeg ret sikker på, at din Session er nedlagt. Jeg vil tro IE cacher siden og så ser det ud som om, at man er logget ind igen. Kan du foretage noget funktionalitet, der kræver at du er logget ind efter at du er logget ud og har trykket "Back"?
Avatar billede repsak Nybegynder
19. oktober 2005 - 11:38 #2
nej, og du har også ret i at sessionen bliver slettet, men jeg er ikke helt tilfreds med at 'andre' kan se indholdet af en side som er beskyttet. Jeg ved godt at man bør lukke browseren og alt det der, men det gør brugere i praksis jo ikke. Mener du at hvis man sørger for at siden ikke bliver cachet så spiller det?
Avatar billede the_party_dog Nybegynder
19. oktober 2005 - 11:58 #3
Hvorfor tester du ikke netop på din session? Lav alle controls visible = false, så hvis de ikke er logget ind, er siden bare tom. Det vil afhjælpe dit problem.
Avatar billede the_party_dog Nybegynder
19. oktober 2005 - 11:59 #4
Lav en hurtig lille funktion, som bliver kaldt fra page_load, og konventere indholdet af din session til en bool, og send den med som parameter til funktionen....
Avatar billede agertoft Nybegynder
19. oktober 2005 - 12:04 #5
På alle sider med beskyttet indhold, laver du et check på, om din Session er sat.
Noget a'la:

if (Session["userID"] == null)
  Response.Redirect("login.aspx");

Jeg er ikke helt sikker på, at siden ikke vil være cachet alligevel...
Avatar billede agertoft Nybegynder
19. oktober 2005 - 12:09 #6
Det hjælper ikke kan jeg se, for siden er cachet og dermed går den ikke engang ind i Page_Load på din forrige side. Det hele sker client-side. Jeg ved faktisk ikke helt, hvordan man undgår den situation, men jeg vil prøve at undersøge det...
Avatar billede agertoft Nybegynder
19. oktober 2005 - 12:27 #7
I toppen af alle de sider, du ikke ønsker at cache, tilføjer du følgende kode (eller kalder en global metode med følgende kode):

Response.Buffer="COLOR: blue">true;<o:p></o:p>
Response.ExpiresAbsolute=DateTime.Now.AddDays(-1d);
Response.Expires =-1500;
Response.CacheControl = "no-cache";

if(Session["userID"] == null)
{
        Response.Redirect ("WdetLogin.aspx");
}

Det fortæller serveren, dit website står på, at den ikke skal cache siden og at det det cache der nu alligevel skulle forekomme, bliver sat til at udløber før dags dato. Så skulle det køre :)
Avatar billede the_party_dog Nybegynder
19. oktober 2005 - 12:30 #8
Agertoft: Elegant løsning, og meget hurtig lavet... Noget du selv læste dig til, eller fandt du noget information på nettet?

Havde noget tilsvarende i tankene, som man gør med cookies, men vidste ikke man kunne tilgå cache delen på samme måde...
Avatar billede agertoft Nybegynder
19. oktober 2005 - 12:40 #9
Jeg fandt det på http://www.codeproject.com/useritems/NoCaching.asp

Det er jo en meget nyttig ting at vide. Jeg vidste heller ikke det om caching, men har selv også været ude for netop samme problem :)
Avatar billede agertoft Nybegynder
19. oktober 2005 - 13:13 #10
Kan du få det til at virke?
Avatar billede repsak Nybegynder
19. oktober 2005 - 14:38 #11
jeg har fået en kammerat til at prøve det, og rygtet siger at det virker, så det stoler jeg på ;-)

Tak for det!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester