Avatar billede pablopablo Nybegynder
03. juli 2008 - 23:36 Der er 21 kommentarer

Session timeout

Hejsa

Et lille spørgsmål ang. Session TimeOut.

Hvad er den bedste måde, at vise en besked til brugeren, når hans session udløber? Mener er have læst noget, et sted, hvor der vist stod at det ikke var optimalt at bruge Session_End eventen?

Vis mig gerne noget C# kode! :-)

Mvh. PabloPablo
Avatar billede erikjacobsen Ekspert
03. juli 2008 - 23:45 #1
Du har sikkert en sessions-variabel, der skal være sat, hvis personen er "aktiv". Den tester du på øverst i Page_Load, hvor det er relevant. Og så rederecter du til "detvarvelnokaergeligtmendinsessionfindesikkelaengere.aspx", hvor du kan skrive at han skal starte forfra.

(og der er sikkert andre måder)
Avatar billede pablopablo Nybegynder
03. juli 2008 - 23:53 #2
ikke forstået...Hvordan reg. jeg at hans session ER udløbet?
Avatar billede erikjacobsen Ekspert
03. juli 2008 - 23:59 #3
Hmm, C#, længe siden.... Men noget i retning af

  if (Session["brugernavn"]==null) {
    Response.Redirect("detvarvelnokaergeligtmendinsessionfindesikkelaengere.aspx");
    Response.End();
  }
Avatar billede arne_v Ekspert
03. juli 2008 - 23:59 #4
Jeg har svært ved at se pointen.

Det kræver en request at hente noget info fra server til client. En request refresher
session så den ikke time rud.
Avatar billede pablopablo Nybegynder
04. juli 2008 - 00:01 #5
ja, det er rigtig arne... hvordan lyder dit foreslag?
Avatar billede arne_v Ekspert
04. juli 2008 - 00:44 #6
Du bliver nødt til at lade noget JavaScript på siden holde styr på hvor lang tid der er
tilbage.

Men er det et problem. Session timeout er vel en 10-20-30 minutter og hvis folk intet
laver på siden i så lang tid, så er de vel "døde".
Avatar billede pablopablo Nybegynder
04. juli 2008 - 08:32 #7
Der er ikke noget reelt problem, andet end at jeg ønsker at vise en besked til brugeren på startsiden, således at at han ved, at han er blevet logget ud pga. hans session er udløbet. Det må da være et meget almindeligt ønske, som ikke kræver det helt store? Jeg kan ikke få Session_End eventen til at blive kaldt, trods jeg har prøvet at sætte sessionstate til InProc i web.configen...

Kan du vise mig hvordan du vil løse opgaven evt. via java script?
Avatar billede erikjacobsen Ekspert
04. juli 2008 - 09:46 #8
Der er vel flere måder:

1) Gør noget med et script på serveren hvert 5. minut, for at holde sessionen i gang.
2) Tæl ned til sessiontimeout i browseren. Prøv http://n0p.com/837154.php og vent i 11 sekunder.
Avatar billede pablopablo Nybegynder
04. juli 2008 - 10:05 #9
Jeg har brug for at I viser mig hvordan! Ikke bare at det kan lade sig gøre ;)
Avatar billede simsen Mester
04. juli 2008 - 14:13 #10
pablopablo

Hvis du nu gik til linket som erikjacobsen har givet dig og så højreklikker med musen og vælger "Vis kilde" - så viser han dig jo netop, hvordan du skal gøre det med javascript ;-)
Avatar billede pablopablo Nybegynder
04. juli 2008 - 16:10 #11
Hey, sorry...var lidt for hurtig...jeg troede bare at der var en mere specifikt måde at gøre det på i asp.net?

Dvs. at jeg så skal bruge det script i min masterpage alene? Jeg tænker på, i min web.config angiver man jo også et session timeout...hvordan påvirker de hinanden`?
Dette kunne selvfølgelig hurtigt løses med at sætte antal min i web.config'en til max.

På netbank popper der ofte en besked frem efter fx. 15min, om ens session er ved at udløbe og om man derfor ønsker at forlænge denne? Kan i også vise mig hvordan dette gøres?

Til sidst, kan dette kobles sammen med AJAX, således at man kan designe en pæn popup, når man ønsker at vise beskeden til brugeren?
Avatar billede erikjacobsen Ekspert
04. juli 2008 - 16:14 #12
Jo, men, hvad vil du?
Avatar billede pablopablo Nybegynder
04. juli 2008 - 16:21 #13
At når der fx. var gået 15 min...så poppede der en besked frem til brugeren om, at hans session var udløbet og om han ønkede at forlænge den. Beskeden ønsker jeg at vise på samme måde som jeg gør på resten af sitet via AJAX ConfirmButtonExtender og ModalPopupExtender...så hvis det også er muligt her, ville det bare være super!
Avatar billede erikjacobsen Ekspert
04. juli 2008 - 16:35 #14
Det jeg viser dig har ikke noget med AJAX at gøre - det er bare Javascript. Det måler selvfølgelig intet med hensyn til sessions udløb, men blot om der er gået et stykke tid, fx. 15 minutter. Hvad du viser til brugeren kan du måske vise ham på samme måde som du gør nu.

Men det der måles er tiden fra siden bliver vist. Hvert kald med AJAX holder sikkert sessionen i live, så ideelt set skal du programmere, at den tæller forfra ved hvert kald med AJAX.
07. juli 2008 - 10:24 #15
Hejsa.

Løsningen til dette kan umuligt blive pæn.

Du kan godt lave et javascript der tæller fra det antal minutter der er sat i Timeout - men det bliver ikke helt præcist. Plus, har brugeren ikke slået javascript til, hvad så ?

Du kan ikke lave noget af det på server siden for hver gang du kalder serveren bliver din session "refreshed".

Netbanker bruger oftes en Java klient til deres applikation, det er bare lidt tungt at gøre i dette tilfælde hvis du kun er ude på, at få vist en timeout besked.
Avatar billede pablopablo Nybegynder
07. juli 2008 - 10:44 #16
Hej Daniel...tak for dit indlæg...jeg synes nu ikke jeg kræver så meget, men synes blot at det ville være god skik, at informerer brugeren om, hvorfor han er logget ud, ved at vise en besked på forsiden. Jeg er med på teorien...men troede trods alt, at det var noget som mange også brugte og at der fandtes et simpelt svar...

Hvordan fungere asp.net Session_End event så, den må vil blive kaldt server side? Jeg kan dog ikke umiddelbart få den til at blive kaldt, trods jeg har sat SessionState/InProc til true in min web.config...
Avatar billede erikjacobsen Ekspert
07. juli 2008 - 10:48 #17
"hvorfor han er logget ud" ... Det er jo igen det der med at du skal bestemme dig. Vil du:

1) Fortælle brugeren at han er lige ved at bliver logget ud, så han kan nå at gøre noget inden?
2) Fortælle brugeren efterfølgende, at han er logget ud, og skal starte forfra?

Begge dele kan du med lidt god vilje gøre ud fra hvad der er skrevet her. Og nej: session_end eventet kan ikke kommunikere med brugerens browser. Den kan bruges til at "rydde op" på serveren.
Avatar billede pablopablo Nybegynder
07. juli 2008 - 12:01 #18
erik... i det jeg ikke selv kender mulighederne, ja så har jeg nok spurgt om noget forskelligt...

Den simpleste løsning, må selvfølgelig være din nr. 2 og mere avanceret nr. 1 jeg er faktisk interesseret i, at vide hvordan jeg kan implementere dem begge...jeg benytter masterpage og contentpages...og ønsker at kunne sætte timeout på div. contentpages, og vise besked på den contentpage, som brugeren redirektes til, hvis det er muligt? Eller det er måske kun muligt, at vise en popup besked?
Avatar billede erikjacobsen Ekspert
07. juli 2008 - 12:20 #19
Jeg forstår så stadig ikke hvad du vil.
Avatar billede pablopablo Nybegynder
07. juli 2008 - 12:56 #20
1. Jeg vil vise en besked til brugeren på den side som han redirektes til når han er blevet logget ud, pga. hans session er udløbet.

2. Evt. hvis det er muligt, give brugeren muligheden for, at at forlænge session'en inden udløb, når fx. 13 af de 15min er gået...
Avatar billede erikjacobsen Ekspert
07. juli 2008 - 14:04 #21
Ok. Og det jeg så ikke forstår er at begge dele er behandlet i de kommentarer der er kommet.

1.: 03/07-2008 23:45:37 (m.fl.)
2.: 04/07-2008 09:46:15 punkt 1) (hvis det skal ske automatisk), eller
    04/07-2008 09:46:15 punkt 2) (hvis brugeren skal spørges).
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