|
|
 | Session_OnEnd spørgsmål Fra : Thomas Due |
Dato : 05-02-03 15:00 |
|
Hejsa,
Jeg har konstrueret et website som bl.a. rummer en login funktion. Af
forskellige årsager ønsker jeg ikke at brugere kan logge ind mere end et
vist antal gange samtidigt. F.eks. er brugeren "thomas" sat til at kunne
logge ind 5 gange. Dette styrer jeg så ved at tælle en variabel i databasen
op med en, når han logger ind og ned med en, når han logger ud.
Hvis brugeren er logget ind det maksimalt tilladte antal gange, kan han ikke
logge ind før mindst en af de andre er logget af.
Jeg har placeret den kode der tæller ned ved udlogning i min Session_OnEnd
hændelse, efter den opfattelse at denne bliver kørt, når brugeren forlader
web-sitet i forbindelse med at han skifter til et anden website, eller
lukker browseren, ud over selvfølgelig når sessionsobjektet nedlægges.
Det viser sig så at det tilsyneladende ikke er tilfældet. Kan det have sin
rigtighed at Session_OnEnd ikke bliver kørt hvis browseren lukkes inden
brugeren er logget ud?
Ligeledes, kan det passe at hændelsen heller ikke bliver kørt hvis brugeren
skifter til et andet website uden at logge ud?
Hvis svaret er ja til begge spørgsmål, hvad skal jeg så gøre for at sikre at
variablen tælles ned korrekt?
Under hvilke omstændigheder bliver Session_OnEnd helt nøjagtigt afviklet?
På forhånd tak.
--
Thomas Due
Software Developer
Scanvaegt Nordic A/S
| |
Chrisser (05-02-2003)
 | Kommentar Fra : Chrisser |
Dato : 05-02-03 15:22 |
|
"Thomas Due" <t.due@scanvaegt_remove.dk> skrev i en meddelelse
news:b1r5dl$dls$1@sunsite.dk...
> Det viser sig så at det tilsyneladende ikke er tilfældet.
> Kan det have sin rigtighed at Session_OnEnd ikke bliver
> kørt hvis browseren lukkes inden brugeren er logget ud?
>
> Ligeledes, kan det passe at hændelsen heller ikke bliver kørt hvis
> brugeren skifter til et andet website uden at logge ud?
Ja og nej.
Jeg mener det er sådan at hvis en bruger undlader at logge ud, men
forlader siden eller lukker browseren, så "lever" sessionen intil
session.Timeout rammes.
Den står normalt til 20 minutter, og man kan da også opleve at
hvis man kommer til at lukke sin browser ned, eller forbindelsen
mistes så kan man ofte godt koble op igen og stadig være logget ind.
Det ved jeg så ikke om du kan bruge til noget
Men måske du så kan lave noget der kører en session.Abandon
hvis en bruger forlader sitet uden at logge af ?
CHrisser
| |
Jimmy (05-02-2003)
 | Kommentar Fra : Jimmy |
Dato : 05-02-03 15:31 |
|
"Thomas Due" <t.due@scanvaegt_remove.dk> wrote in message
news:b1r5dl$dls$1@sunsite.dk...
> Hejsa,
>
> Kan det have sin
> rigtighed at Session_OnEnd ikke bliver kørt hvis browseren lukkes inden
> brugeren er logget ud?
Ja - det er min klare erfaring.
Dette har jeg desuden læst på adskillige hjemmesider og i ASP Unleashed 2.0.
Jeg regner metoden for upålidelig og ville aldrig anvende den, men
programmerer mig ud af et evt. problem på en anden måde.
mvh
Jimmy
| |
Jakob Andersen (05-02-2003)
 | Kommentar Fra : Jakob Andersen |
Dato : 05-02-03 15:52 |
|
"Jimmy" <nyhedsgruppe@get3_erstat_3_med_2.dk> wrote
[Session_Onend]
> Jeg regner metoden for upålidelig og ville aldrig anvende den, men
> programmerer mig ud af et evt. problem på en anden måde.
Ovenstående påstand bliver ofte fremført af mange forskellige mennesker, men
jeg savner noget dokumentation.
Det er rigtigt at der på IIS4 kan være nogle problemer hvor man lige skal
dykke lidt i registreringsdatabasen for at få sat en korrekt session
timeout, men på IIS5 savner jeg stadig nogle argumenter for _hvorfor_
Session_OnEnd af så mange regnes for upålidelig.
--
Jakob Andersen
| |
 Jimmy (06-02-2003)
 | Kommentar Fra : Jimmy |
Dato : 06-02-03 08:32 |
|
"Jakob Andersen" <jakob@effectus.dk> wrote in message
news:b1r8hu$95l$1@news.cybercity.dk...
> "Jimmy" <nyhedsgruppe@get3_erstat_3_med_2.dk> wrote
> [Session_Onend]
> > Jeg regner metoden for upålidelig og ville aldrig anvende den, men
> > programmerer mig ud af et evt. problem på en anden måde.
>
> Ovenstående påstand bliver ofte fremført af mange forskellige mennesker,
men
> jeg savner noget dokumentation.
Jeg trækker mit udsagn om at den er upålidelig tilbage.
Det bundede i en manglende forståelse for Session_OnEnd.
Pointen i nedenstående er, at eventen *ikke* afvikles når en bruger lukker
sin browser.
Den afvikles bl.a. når sessionen timer ud eller Session.Abandon køres.
Fra asp101:
"Sessions DO NOT end when a user closes their browser. There is no
communication with the server when a browser is closed so there is no way
the server can know to end the session. The same is true when you leave the
site for another. Again no communication takes place between your browser
and the site you're leaving so the server never knows you've left."
http://www.asp101.com/articles/john/sessionsend/default.asp
Fra Microsoft:
"The Session_OnEnd event occurs when a session is abandoned or times out. "
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iisref/html
/psdk/asp/glob2y90.asp
Fra Microsoft:
"Session_OnEnd is called either when the session times out or when there is
a script call that tells Active Server Pages to abandon the session, such as
when a user clicks Log Off in Microsoft Outlook Web Access."
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cdo/html/_o
lemsg_the_session_onend_function.asp
Fra Learnasp:
"Fact #1: When a browser window closes, the session DOES NOT end."
http://www.learnasp.com/learn/sessionoverview.asp
Mvh
Jimmy
| |
Jakob Andersen (05-02-2003)
 | Kommentar Fra : Jakob Andersen |
Dato : 05-02-03 15:55 |
|
"Thomas Due" <t.due@scanvaegt_remove.dk> wrote
> Det viser sig så at det tilsyneladende ikke er tilfældet. Kan det have sin
> rigtighed at Session_OnEnd ikke bliver kørt hvis browseren lukkes inden
> brugeren er logget ud?
Den bliver kørt når Sessionen timer ud jvf. indstillingerne i IIS management
console eller evt. sat vha ASP (Dog er der nogle problemer med IIS4 hvor man
efter sigende skal sætte værdien manuelt i registreringsdatabasen).
Dog kan jeg godt se et andet problem i din metode til tjek om simultan
logins. En bruger kan jo sagtens have flere browservinduer åbne der kører på
samme session. Og sidst men ikke mindst er der svjh ikke adgang til
sessionværdier men kun sessionid'et i Session_OnEnd
--
Jakob Andersen
| |
Thomas Due (06-02-2003)
 | Kommentar Fra : Thomas Due |
Dato : 06-02-03 08:21 |
|
Jakob Andersen <jakob@effectus.dk> wrote:
> Dog kan jeg godt se et andet problem i din metode til tjek om simultan
> logins. En bruger kan jo sagtens have flere browservinduer åbne der
> kører på samme session.
Okay, det har du jo sådan set ret i. Har du evt. et andet forslag så?
> Og sidst men ikke mindst er der svjh ikke
> adgang til sessionværdier men kun sessionid'et i Session_OnEnd
Det er sådan set ikke et problem, da værdien ligger i databasen, og
Session_OnEnd kører en metode i et COM objekt til at registrere at sessionen
er slut. Mht. flere vinduer,
--
Thomas Due
Software Developer
Scanvaegt Nordic A/S
| |
 Jakob Andersen (06-02-2003)
 | Kommentar Fra : Jakob Andersen |
Dato : 06-02-03 08:30 |
|
"Thomas Due" <t.due@scanvaegt_remove.dk> wrote
> Okay, det har du jo sådan set ret i. Har du evt. et andet forslag så?
Den tror jeg du bliver nødt til at klare på klienten. Spørg evt. i
news:dk.edb.internet.webdesign.clientside , det kan være de har nogle idéer.
--
Jakob Andersen
| |
 Jesper Nielsen (06-02-2003)
 | Kommentar Fra : Jesper Nielsen |
Dato : 06-02-03 09:18 |
|
> Det er sådan set ikke et problem, da værdien ligger i databasen, og
> Session_OnEnd kører en metode i et COM objekt til at registrere at
sessionen
> er slut. Mht. flere vinduer,
Du skal passe på med at anvende SessionID som unique identifier.
SessionID'er er unikke, så længe man holder serveren kørende - men
genstarter man sin IIS, kan man godt risikere, at SessionID'er bliver
genbrugt.
--
Mvh. Jesper
| |
  Jimmy (06-02-2003)
 | Kommentar Fra : Jimmy |
Dato : 06-02-03 09:30 |
|
--
--
Mvh
Jimmy Jeppesen
"Jesper Nielsen" <jn@nielsenit.dk> wrote in message
news:2To0a.54718$Hl6.6943852@news010.worldonline.dk...
> > Det er sådan set ikke et problem, da værdien ligger i databasen, og
> > Session_OnEnd kører en metode i et COM objekt til at registrere at
> sessionen
> > er slut. Mht. flere vinduer,
>
> Du skal passe på med at anvende SessionID som unique identifier.
> SessionID'er er unikke, så længe man holder serveren kørende - men
> genstarter man sin IIS, kan man godt risikere, at SessionID'er bliver
> genbrugt.
Ifølge Learnasp:
"Fact #4: Session ids are not guaranteed to be different anytime a new
session is generated. If there are 1,000 sessions there will be 1,000 unique
session ids. But if 200 people loose session (due to timeout or explicit
..abandon) and 150 new sessions are begun ASP may and will certainly use the
same session IDs it was using earlier. "
http://www.learnasp.com/learn/sessionoverview.asp
Mvh
Jimmy
| |
   Jesper Nielsen (07-02-2003)
 | Kommentar Fra : Jesper Nielsen |
Dato : 07-02-03 06:39 |
|
> Ifølge Learnasp:
>
> "Fact #4: Session ids are not guaranteed to be different anytime a new
> session is generated. If there are 1,000 sessions there will be 1,000
unique
> session ids. But if 200 people loose session (due to timeout or explicit
> .abandon) and 150 new sessions are begun ASP may and will certainly use
the
> same session IDs it was using earlier. "
Okay - jeg var ellers overbevist om, at IIS kun benbrugte dem, hvis man
genstartede serveren/IIS.
--
Mvh. Jesper
| |
|
|