|
| Logge bruger af, når browser lukkes?? Fra : Torben Jensen |
Dato : 12-05-03 07:41 |
|
Hej NG!
Kan man i asp lave noget så brugerens sesssion automatisk stoppes/afsluttes,
når denne lukker sit browservindue? (evt. i global.asa)
Hvis der skulle være et link eller andet eksempel på, hvordan noget sådant
kunne laves, så vil det være meget kærkommen.
M.v.h.
Torben Jensen
| |
stk (12-05-2003)
| Kommentar Fra : stk |
Dato : 12-05-03 08:41 |
| | |
Jens Gyldenkærne Cla~ (12-05-2003)
| Kommentar Fra : Jens Gyldenkærne Cla~ |
Dato : 12-05-03 08:58 |
|
Torben Jensen skrev:
> Kan man i asp lave noget så brugerens sesssion automatisk
> stoppes/afsluttes, når denne lukker sit browservindue? (evt. i
> global.asa)
Nej.
Man kan forsøge sig med et javascript der kaldes onUnload - altså
når en side forlades - alle links internt på siden skal så gå uden
om dette link. Men der er mig bekendt ikke nogen sikker måde at
tjekke for at brugeren lukker sin browser.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html
| |
Torben Jensen (12-05-2003)
| Kommentar Fra : Torben Jensen |
Dato : 12-05-03 10:43 |
|
"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev i en meddelelse
news:Xns9379656B09DEFjcdmfdk@gyrosmod.cybercity.dk...
> Nej.
>
> Man kan forsøge sig med et javascript der kaldes onUnload - altså
> når en side forlades - alle links internt på siden skal så gå uden
> om dette link. Men der er mig bekendt ikke nogen sikker måde at
> tjekke for at brugeren lukker sin browser.
> --
Ok.
Scriptløsningen er for mig en dårlig løsning, idet det skal implementeres på
mange sider. Derfor ville det have være rart, hvis man kunne klare det fra
et centralt sted, som eksempelvis global.asa.
Tak for hjælpen
M.v.h.
Torben Jensen
| |
Martin_P (12-05-2003)
| Kommentar Fra : Martin_P |
Dato : 12-05-03 10:50 |
|
jamen - virker en normal session("navn") ikke på dette - forstået
således...
Når brugeren er logget ind sætter man en session variabel, som man så
på password beskyttede sider checker for....
Når browseren lukkes vil denne session variabel ikke længere være sat
og brugeren vil derfor være logget ud...
Martin_P
>
>Ok.
>
>Scriptløsningen er for mig en dårlig løsning, idet det skal implementeres på
>mange sider. Derfor ville det have være rart, hvis man kunne klare det fra
>et centralt sted, som eksempelvis global.asa.
>
>Tak for hjælpen
>
>M.v.h.
>Torben Jensen
>
| |
Jesper Stocholm (12-05-2003)
| Kommentar Fra : Jesper Stocholm |
Dato : 12-05-03 10:57 |
|
Martin_P wrote :
> jamen - virker en normal session("navn") ikke på dette - forstået
> således...
>
> Når brugeren er logget ind sætter man en session variabel, som man så
> på password beskyttede sider checker for....
>
> Når browseren lukkes vil denne session variabel ikke længere være sat
> og brugeren vil derfor være logget ud...
Sådan virker session ikke.
Sessions dør, når ét af følgende tilfælde forekommer
1.
Session.Abandon køres
2.
Session-timeout, som specificeret på enten server eller global.asa,
overskrides.
Lukning af en browser kan på ingen måde få nogen af ovenstående til at
hænde - hvis det ikke kombineres med noget javascript eller lignende. Det
er klart, at et nyt browservindue vil afstedkomme en ny session, men den
gamle vil stadig "hænge" i systemet til session-timeout er nået.
--
Jesper Stocholm - http://stocholm.dk
if you are competing with the darknet, you must compete on the darknet's
own terms: that is convenience and low cost rather than additional
security. ( http://crypto.stanford.edu/DRM2002/darknet5.doc )
| |
Martin_P (12-05-2003)
| Kommentar Fra : Martin_P |
Dato : 12-05-03 11:31 |
|
On Mon, 12 May 2003 09:56:43 +0000 (UTC), Jesper Stocholm
<j@stocholm.invalid> wrote:
Nååeh - så er det derfor det andet virker - den laver slevf. en ny
session - hmmm den havde jeg jo så ikek lige været omkring...!!
Tak for oplysningen
Martin_P
>Lukning af en browser kan på ingen måde få nogen af ovenstående til at
>hænde - hvis det ikke kombineres med noget javascript eller lignende. Det
>er klart, at et nyt browservindue vil afstedkomme en ny session, men den
>gamle vil stadig "hænge" i systemet til session-timeout er nået.
| |
Jesper Stocholm (12-05-2003)
| Kommentar Fra : Jesper Stocholm |
Dato : 12-05-03 11:40 |
|
Martin_P wrote :
> On Mon, 12 May 2003 09:56:43 +0000 (UTC), Jesper Stocholm
> <j@stocholm.invalid> wrote:
>
> Nååeh - så er det derfor det andet virker - den laver slevf. en ny
> session - hmmm den havde jeg jo så ikek lige været omkring...!!
>
> Tak for oplysningen
velbekomme ... hvis du nu vil gøre mig (og andre) rigtig glad, så k(l)ikker
du lige på det nederste link i min signatur, så du kan se, hvorfor det er
en fordel af skrive _under_ det man svarer på.
--
Jesper Stocholm - http://stocholm.dk
** Vil det sige, at ham Lars er et stort brød på 15 år ? **
Svar venligst til gruppen og ikke til mig privat !
Skriv under det du svarer på - www.usenet.dk/netikette/citatteknik.html
| |
Torben Jensen (12-05-2003)
| Kommentar Fra : Torben Jensen |
Dato : 12-05-03 12:24 |
|
"Jesper Stocholm" <j@stocholm.invalid> skrev i en meddelelse
news:Xns9379797217E24spamstocholmdk@130.226.1.34...
> Martin_P wrote :
>
> 1.
> Session.Abandon køres
>
> 2.
> Session-timeout, som specificeret på enten server eller global.asa,
> overskrides.
>
> Lukning af en browser kan på ingen måde få nogen af ovenstående til at
> hænde - hvis det ikke kombineres med noget javascript eller lignende. Det
> er klart, at et nyt browservindue vil afstedkomme en ny session, men den
> gamle vil stadig "hænge" i systemet til session-timeout er nået.
>
Det er lige præcis det der er problemet. Min server er sat op så sessionen
timer ud efter 10 min, men i de 10 min. vil brugeren ikke kunne logge på,
hvis vedkommende er "kommet til" at lukke browseren.
Når man har et site, som kun tillader brugeren at være logget på med én
session, så kan der selvfølgelig opstå en situation, som brugeren vil opleve
som værende meget irriterende - nemlig at skulle vente de 10 min.
Som jeg kan forstå, så findes der desværre ikke nogen måde at håndtere det
på.
Med fare for at bevæge mig ud i periferien, så vil jeg alligevel spørge -
det kan man da i eksempelvis asp.net, ikke? Et ja, eller nej rækker, så skal
jeg nok selv tage det op i den passende gruppe på et senere tidspunkt.
M.v.h.
Torben Jensen
| |
Chrisser (12-05-2003)
| Kommentar Fra : Chrisser |
Dato : 12-05-03 13:18 |
|
Torben Jensen wrote:
> Det er lige præcis det der er problemet. Min server er sat op så
> sessionen timer ud efter 10 min, men i de 10 min. vil brugeren ikke
> kunne logge på, hvis vedkommende er "kommet til" at lukke browseren.
> Når man har et site, som kun tillader brugeren at være logget på med
> én session, så kan der selvfølgelig opstå en situation, som brugeren
> vil opleve som værende meget irriterende - nemlig at skulle vente de
> 10 min.
>
> Som jeg kan forstå, så findes der desværre ikke nogen måde at
> håndtere det på.
> Med fare for at bevæge mig ud i periferien, så vil jeg alligevel
> spørge - det kan man da i eksempelvis asp.net, ikke? Et ja, eller nej
> rækker, så skal jeg nok selv tage det op i den passende gruppe på et
> senere tidspunkt.
Kan du ikke bare teste på om brugeren ér logget ind (det gør du vel
alligevel i toppen af dine sider for at se om de har rettigheder)- så er det
jo ikke nødvendigt at logge ind igen....
Chrisser
| |
Torben Jensen (12-05-2003)
| Kommentar Fra : Torben Jensen |
Dato : 12-05-03 14:15 |
|
"Chrisser" <cbj@egdatainform.dk> skrev i en meddelelse
news:b9o3iu$nt6$1@sunsite.dk...
> Torben Jensen wrote:
>
> Kan du ikke bare teste på om brugeren ér logget ind (det gør du vel
> alligevel i toppen af dine sider for at se om de har rettigheder)- så er
det
> jo ikke nødvendigt at logge ind igen....
>
> Chrisser
>
Når sessionen er oprettet, så kan jeg jo ikke vide, om han har lukket sit
vindue eller ej. Så længe sessionen eksisterer på serveren kan brugeren ikke
logge ind.
Det jeg hører dig sige er, at brugeren jo så heller ikke behøver at logge på
igen, da brugeren har en session på serveren, men hvordan får jeg fat i den,
når browseren har været lukket ned?
M.v.h.
Torben Jensen
| |
Jesper Stocholm (12-05-2003)
| Kommentar Fra : Jesper Stocholm |
Dato : 12-05-03 14:29 |
|
Torben Jensen wrote :
>
> "Chrisser" <cbj@egdatainform.dk> skrev i en meddelelse
> news:b9o3iu$nt6$1@sunsite.dk...
>> Torben Jensen wrote:
>>
>> Kan du ikke bare teste på om brugeren ér logget ind (det gør du vel
>> alligevel i toppen af dine sider for at se om de har rettigheder)- så
>> er
> det
>> jo ikke nødvendigt at logge ind igen....
>>
>> Chrisser
>>
>
> Når sessionen er oprettet, så kan jeg jo ikke vide, om han har lukket
> sit vindue eller ej. Så længe sessionen eksisterer på serveren kan
> brugeren ikke logge ind.
Hvorfor ikke ? Hvorfor har du valgt at lave det på denne måde ?
> Det jeg hører dig sige er, at brugeren jo så heller ikke behøver at
> logge på igen, da brugeren har en session på serveren, men hvordan får
> jeg fat i den, når browseren har været lukket ned?
En session er defineret ved den cookie ved navn ASPSESSIONIDASCSSCQR, der
sættes på klienten, når man browser et website. Værdien af denne cookie
kan du jo gemme sammen med brugerid i din "online"-liste. Når så en
bruger logger på med samme brugerid kan du så _forsøge_ at sende denne
cookie-værdi tilbage til klienten. På den måde kan du forsøge at lavet et
"serverside session-hijack".
.... jeg er ikke sikker på, at det vi virke.
--
Jesper Stocholm - http://stocholm.dk
www.asp-faq.dk: FAQ for dk.edb.internet.webdesign.serverside.asp
www.usenet.dk/netikette/citatteknik.html: Skriv under det du svarer på
Svar venligt til gruppen og ikke til mig privat !
| |
Chrisser (12-05-2003)
| Kommentar Fra : Chrisser |
Dato : 12-05-03 14:28 |
|
Torben Jensen wrote:
> Når sessionen er oprettet, så kan jeg jo ikke vide, om han har lukket
> sit vindue eller ej. Så længe sessionen eksisterer på serveren kan
> brugeren ikke logge ind.
>
> Det jeg hører dig sige er, at brugeren jo så heller ikke behøver at
> logge på igen, da brugeren har en session på serveren, men hvordan
> får jeg fat i den, når browseren har været lukket ned?
>
Du kan være ligeglad med om han har haft sit vindue lukket, hvis hans
sission ikke er udløbet kan du få fat i den ved at sige
session("minSession") - serveren skal nok sørge for at det er den rigtige.
Prøv engang at udskrive en af dine sessonvariable på en af dine sider.
Logind, kig på din session og luk vinduet. Åbn en browser og kald den
pågældende side frem.
Sessionsvariablen er den samme....fordi sessionsID kommer fra
klientmaskinen - den genkendes af serveren, og hvis der ikke er gået 10
minutter kan de kende hinanden
- mange gange undskyld den elendige formulering her til sidst, men jeg har
ikke tid tid at finde en der er mere korrekt.
Chrisser
| |
Jesper Stocholm (12-05-2003)
| Kommentar Fra : Jesper Stocholm |
Dato : 12-05-03 14:46 |
|
Chrisser wrote :
> Du kan være ligeglad med om han har haft sit vindue lukket, hvis hans
> sission ikke er udløbet kan du få fat i den ved at sige
> session("minSession") - serveren skal nok sørge for at det er den
> rigtige.
>
> Prøv engang at udskrive en af dine sessonvariable på en af dine sider.
> Logind, kig på din session og luk vinduet. Åbn en browser og kald den
> pågældende side frem.
> Sessionsvariablen er den samme....fordi sessionsID kommer fra
> klientmaskinen - den genkendes af serveren, og hvis der ikke er gået
> 10 minutter kan de kende hinanden
> - mange gange undskyld den elendige formulering her til sidst, men jeg
> har ikke tid tid at finde en der er mere korrekt.
Jeg har en anden oplevelse af dette (angår kun IE).
Hvis du har ret, så vil det betyde, at session-timeout også ligger i den
cookie, der holder styr på sessionen for klienten. Dette kan jeg blot ikke
forestille mig. Sessions er jo midlertidige cookies, dvs de slettes i det
øjeblik du lukker din browser. Hvis du har flere vinduer åbne, så er det en
anden sag, da den aktuelle session "deles" imellem - men ellers bør disse
cookies slettes i det øjeblik din browser lukkes. Er det ikke tilfældet
synes jeg faktisk det er et STORT sikkerhedsmæssigt problem.
Hvis du kan dokumentere dine oplevelser, så vil jeg _meget_ gerne se lidt
mere om det.
--
Jesper Stocholm - http://stocholm.dk
Glad spampal-bruger, der pt har en succesrate på 90,86%
http://www.spampal.org.uk/
| |
Chrisser (13-05-2003)
| Kommentar Fra : Chrisser |
Dato : 13-05-03 07:27 |
|
Jesper Stocholm wrote:
> Jeg har en anden oplevelse af dette (angår kun IE).
>
> Hvis du har ret, så vil det betyde, at session-timeout også ligger i
> den cookie, der holder styr på sessionen for klienten. Dette kan jeg
> blot ikke forestille mig. Sessions er jo midlertidige cookies, dvs de
> slettes i det øjeblik du lukker din browser. Hvis du har flere
> vinduer åbne, så er det en anden sag, da den aktuelle session "deles"
> imellem - men ellers bør disse cookies slettes i det øjeblik din
> browser lukkes. Er det ikke tilfældet synes jeg faktisk det er et
> STORT sikkerhedsmæssigt problem.
>
> Hvis du kan dokumentere dine oplevelser, så vil jeg _meget_ gerne se
> lidt mere om det.
Egentlig ikke lige nu - desværre. Så måske var jeg lidt for hurtig der.
Jeg sidder pt med IE6.0, og ja den ser ud til at slette den midlertidige
cookie med det samme. Da jeg indtil for nylig derhjemme kørte med IE5.0
oplevede jeg jeg på nogle sider at hvis jeg kom til at lukke min explorer
ned i utide så kunne jeg åbne den igen, kalde siden igen ( altså med det
samme - ikke timer efter ) og så var jeg stadig logget ind. Jeg havde bare
ikke lagt mærke til at det har ændret sig....nu skal jeg jo heller ikke
afvise at der disse steder har været brugt almindelige cookies - jeg kan
blot ikke rigtig forestille mig nogen god grund til det.
Men omvendt må det jo så også betyde at det ikke skulle være noget problem
med at logge ind igen før serveren nedlægger sessionen, brugeren genkendes
jo netop på baggrund af sessionID.
Chrisser
| |
Jesper Stocholm (13-05-2003)
| Kommentar Fra : Jesper Stocholm |
Dato : 13-05-03 09:07 |
|
Chrisser wrote :
> Jesper Stocholm wrote:
>> Jeg har en anden oplevelse af dette (angår kun IE).
>>
>> Hvis du har ret, så vil det betyde, at session-timeout også ligger i
>> den cookie, der holder styr på sessionen for klienten. Dette kan jeg
>> blot ikke forestille mig. Sessions er jo midlertidige cookies, dvs de
>> slettes i det øjeblik du lukker din browser. Hvis du har flere
>> vinduer åbne, så er det en anden sag, da den aktuelle session "deles"
>> imellem - men ellers bør disse cookies slettes i det øjeblik din
>> browser lukkes. Er det ikke tilfældet synes jeg faktisk det er et
>> STORT sikkerhedsmæssigt problem.
>>
>> Hvis du kan dokumentere dine oplevelser, så vil jeg _meget_ gerne se
>> lidt mere om det.
>
> Egentlig ikke lige nu - desværre. Så måske var jeg lidt for hurtig
> der. Jeg sidder pt med IE6.0, og ja den ser ud til at slette den
> midlertidige cookie med det samme. Da jeg indtil for nylig derhjemme
> kørte med IE5.0 oplevede jeg jeg på nogle sider at hvis jeg kom til at
> lukke min explorer ned i utide så kunne jeg åbne den igen, kalde siden
> igen ( altså med det samme - ikke timer efter ) og så var jeg stadig
> logget ind.
Det betyder jo ikke, at du stadig er logget ind. Det kan godt være en
kopi af siden, der blot ligger i din cache. Jeg oplever ofte dette -
altså at der findes kopier af en side i min cache - men i det øjeblik jeg
klikker på et eller andet på sitet, så bliver jeg bvedt om at logge ind.
> Men omvendt må det jo så også betyde at det ikke skulle være noget
> problem med at logge ind igen før serveren nedlægger sessionen,
> brugeren genkendes jo netop på baggrund af sessionID.
Jeg kan stadig ikke forestille mig det, så du må meget gerne finde et
eksempel på at det virker på den måde - men uanset hvad, så kan jeg ikke
anbefale at designe en løsning, der er afhængig af at en browser ikke
sletter en midlertidig cookie når programmet lukkes.
--
Jesper Stocholm - http://stocholm.dk - http://asp-faq.dk
Skriv venligst under det du svarer på og skær det overflødige væk.
Se evt hvorfor på http://www.usenet.dk/netikette/citatteknik.html
Svar venligt til gruppen og ikke til mig privat !
| |
Chrisser (13-05-2003)
| Kommentar Fra : Chrisser |
Dato : 13-05-03 09:20 |
|
Jesper Stocholm wrote:
> Chrisser wrote :
>
>> Jesper Stocholm wrote:
>> Egentlig ikke lige nu - desværre. Så måske var jeg lidt for hurtig
>> der. Jeg sidder pt med IE6.0, og ja den ser ud til at slette den
>> midlertidige cookie med det samme. Da jeg indtil for nylig derhjemme
>> kørte med IE5.0 oplevede jeg jeg på nogle sider at hvis jeg kom til
>> at lukke min explorer ned i utide så kunne jeg åbne den igen, kalde
>> siden igen ( altså med det samme - ikke timer efter ) og så var jeg
>> stadig logget ind.
>
> Det betyder jo ikke, at du stadig er logget ind. Det kan godt være en
> kopi af siden, der blot ligger i din cache. Jeg oplever ofte dette -
> altså at der findes kopier af en side i min cache - men i det øjeblik
> jeg klikker på et eller andet på sitet, så bliver jeg bvedt om at
> logge ind.
Jeg kunne jo netop navigere rundt.
>> Men omvendt må det jo så også betyde at det ikke skulle være noget
>> problem med at logge ind igen før serveren nedlægger sessionen,
>> brugeren genkendes jo netop på baggrund af sessionID.
>
> Jeg kan stadig ikke forestille mig det, så du må meget gerne finde et
> eksempel på at det virker på den måde - men uanset hvad, så kan jeg
> ikke anbefale at designe en løsning, der er afhængig af at en browser
> ikke sletter en midlertidig cookie når programmet lukkes.
Virker på hvilken måde. Hvis du er logget ud fordi din SessionID er slettet
på klienten - hvad skulle så hindre dig i at logge ind igen ?
Og nej, selvfølgelig kan det ikke anbefales at forlade sig på at browseren
sletter den midlertidige cookie med det samme - medmindre altså at man kan
finde dokumentation på at det er standard for disse ( og ikke kun IE6.0 ).
Chrisser
| |
Jesper Stocholm (13-05-2003)
| Kommentar Fra : Jesper Stocholm |
Dato : 13-05-03 09:37 |
|
Chrisser wrote :
> Jesper Stocholm wrote:
>> Chrisser wrote :
>>
>>> Jesper Stocholm wrote:
>>> Egentlig ikke lige nu - desværre. Så måske var jeg lidt for hurtig
>>> der. Jeg sidder pt med IE6.0, og ja den ser ud til at slette den
>>> midlertidige cookie med det samme. Da jeg indtil for nylig derhjemme
>>> kørte med IE5.0 oplevede jeg jeg på nogle sider at hvis jeg kom til
>>> at lukke min explorer ned i utide så kunne jeg åbne den igen, kalde
>>> siden igen ( altså med det samme - ikke timer efter ) og så var jeg
>>> stadig logget ind.
>>
>> Det betyder jo ikke, at du stadig er logget ind. Det kan godt være en
>> kopi af siden, der blot ligger i din cache. Jeg oplever ofte dette -
>> altså at der findes kopier af en side i min cache - men i det øjeblik
>> jeg klikker på et eller andet på sitet, så bliver jeg bvedt om at
>> logge ind.
>
> Jeg kunne jo netop navigere rundt.
ok ... men det var ikke det du skrev.
>> Jeg kan stadig ikke forestille mig det, så du må meget gerne finde et
>> eksempel på at det virker på den måde - men uanset hvad, så kan jeg
>> ikke anbefale at designe en løsning, der er afhængig af at en browser
>> ikke sletter en midlertidig cookie når programmet lukkes.
>
> Virker på hvilken måde. Hvis du er logget ud fordi din SessionID er
> slettet på klienten - hvad skulle så hindre dig i at logge ind igen ?
At Torben skrev, at en del af hans design af sitet var, at man ikke kunne
logge ind mere end én gang. Som jeg læser Torbens post, så lagres fx
userud i en tabel, og dette gav netop problemet, da de ikke blev slettet
ved at lukke browseren.
> Og nej, selvfølgelig kan det ikke anbefales at forlade sig på at
> browseren sletter den midlertidige cookie med det samme - medmindre
> altså at man kan finde dokumentation på at det er standard for disse (
> og ikke kun IE6.0 ).
Jeg mener netop, at man kan forlade sig på, at browseren sletter din
cookie med det samme. Sessions er jo blot midlertidige cookies, så de
_SKAL_ sgu :) slettes i det øjeblik din browser lukkes - ellers synes jeg
noget af idéen går tabt.
Du skrev tidligere:
>>> Du kan være ligeglad med om han har haft sit vindue lukket, hvis hans
>>> sission ikke er udløbet kan du få fat i den ved at sige
>>> session("minSession") - serveren skal nok sørge for at det er den
>>> rigtige.
Det er dette jeg ikke kan forstå er muligt, og jeg ville gerne have, hvis
du ville/kunne lave et eksempel, der viste det.
--
Jesper Stocholm - http://stocholm.dk
Glad spampal-bruger, der pt har en succesrate på 90,86%
http://www.spampal.org.uk/
| |
Chrisser (13-05-2003)
| Kommentar Fra : Chrisser |
Dato : 13-05-03 09:58 |
|
Jesper Stocholm wrote:
>> Jeg kunne jo netop navigere rundt.
>
> ok ... men det var ikke det du skrev.
Næ, jeg tog det vist for givet at du læste det som jeg skrev det
>>> Jeg kan stadig ikke forestille mig det, så du må meget gerne finde
>>> et eksempel på at det virker på den måde - men uanset hvad, så kan
>>> jeg ikke anbefale at designe en løsning, der er afhængig af at en
>>> browser ikke sletter en midlertidig cookie når programmet lukkes.
>>
>> Virker på hvilken måde. Hvis du er logget ud fordi din SessionID er
>> slettet på klienten - hvad skulle så hindre dig i at logge ind igen ?
>
> At Torben skrev, at en del af hans design af sitet var, at man ikke
> kunne logge ind mere end én gang. Som jeg læser Torbens post, så
> lagres fx userud i en tabel, og dette gav netop problemet, da de ikke
> blev slettet ved at lukke browseren.
Det jeg faldt over var diskussionen omkring sessioner, jeg har ikke set
noget omkring at lagre UserID i en tabel ( der står ikke noget om det - og
jeg har heller ikke tænkt i den retning ), men det er da klart at dette vil
give problemer da den først vil blive slettet når serveren nedlægger
sessionen. Jeg kan heller ikke se nogen nem/stabil løsning på det.
> Du skrev tidligere:
>>>> Du kan være ligeglad med om han har haft sit vindue lukket, hvis
>>>> hans sission ikke er udløbet kan du få fat i den ved at sige
>>>> session("minSession") - serveren skal nok sørge for at det er den
>>>> rigtige.
>
> Det er dette jeg ikke kan forstå er muligt, og jeg ville gerne have,
> hvis du ville/kunne lave et eksempel, der viste det.
Det har jeg jo svaret på én gang, men jeg kopierer det da lige ind igen bare
for et syns skyld:
"Egentlig ikke lige nu - desværre. Så måske var jeg lidt for hurtig der.
Jeg sidder pt med IE6.0, og ja den ser ud til at slette den midlertidige
cookie med det samme. Da jeg indtil for nylig derhjemme kørte med IE5.0
oplevede jeg jeg på nogle sider at hvis jeg kom til at lukke min explorer
ned i utide så kunne jeg åbne den igen, kalde siden igen ( altså med det
samme - ikke timer efter ) og så var jeg stadig logget ind. Jeg havde bare
ikke lagt mærke til at det har ændret sig....nu skal jeg jo heller ikke
afvise at der disse steder har været brugt almindelige cookies - jeg kan
blot ikke rigtig forestille mig nogen god grund til det."
Chrisser
| |
Torben Jensen (13-05-2003)
| Kommentar Fra : Torben Jensen |
Dato : 13-05-03 13:23 |
|
>
> > Jesper Stocholm wrote:
At Torben skrev, at en del af hans design af sitet var, at man ikke kunne
> logge ind mere end én gang. Som jeg læser Torbens post, så lagres fx
> userud i en tabel, og dette gav netop problemet, da de ikke blev slettet
> ved at lukke browseren.
>
Yes, det er lige præcis sådan det forholder sig.
En bruger logger in. Sessionen oprettes og brugerid bliver gemt i en tabel
sammen med sessionID og et tidsstempel.
Systemet tillader kun brugeren at være logget på én gang, med én session.
Hvis så brugeren kommer til at lukke vinduet, så bliver han, hvis han
forsøger at tilgå sitet igen, bedt om at indtaste brugernavn og password
igen.
Her fortæller systemet så brugeren, at det kan han ikke, da han allerede er
logget in.
Brugeren er derfor nødt til at vente 10 min. inden sessionen timer ud, eller
som et alternativ ringe til mig, så jeg manuelt kan slette ham fra en
tabel - irriterende for begge parter.
Det var dette problem jeg troede at jeg kunne løse. Det ville jo have været
snedigt, hvis der blev kastet en event, når browservinduet blev lukket.
Jeg har imidlertid opgivet mit forehavende og er nået til den erkendelse at
det må være som det er, da løsninger med clientside scripts ikke tiltaler
mig og vil være meget omfattende.
Jeg takker for alle de interessante indlæg og en god diskussion.
M.v.h.
Torben Jensen
| |
Jesper Stocholm (13-05-2003)
| Kommentar Fra : Jesper Stocholm |
Dato : 13-05-03 13:42 |
|
Torben Jensen wrote :
>>
>> > Jesper Stocholm wrote:
> At Torben skrev, at en del af hans design af sitet var, at man ikke
> kunne
>> logge ind mere end én gang. Som jeg læser Torbens post, så lagres fx
>> userud i en tabel, og dette gav netop problemet, da de ikke blev
>> slettet ved at lukke browseren.
>>
>
> Yes, det er lige præcis sådan det forholder sig.
>
> En bruger logger in. Sessionen oprettes og brugerid bliver gemt i en
> tabel sammen med sessionID og et tidsstempel.
Hvad bruger du sessionid til ... og hvordan finder du i øvrigt dette ID ?
> Systemet tillader kun brugeren at være logget på én gang, med én
> session. Hvis så brugeren kommer til at lukke vinduet, så bliver han,
> hvis han forsøger at tilgå sitet igen, bedt om at indtaste brugernavn
> og password igen.
>
> Her fortæller systemet så brugeren, at det kan han ikke, da han
> allerede er logget in.
Hvorfor opdaterer du ikke bare tabellen med brugerid - altså opdaterer
tidsstemplet ?
> Det var dette problem jeg troede at jeg kunne løse. Det ville jo have
> været snedigt, hvis der blev kastet en event, når browservinduet blev
> lukket.
>
> Jeg har imidlertid opgivet mit forehavende og er nået til den
> erkendelse at det må være som det er, da løsninger med clientside
> scripts ikke tiltaler mig og vil være meget omfattende.
Hvis det er dit design, der blokerer for din løsning, så kunne du måske
overveje om det var dit design, der var uhehsigtsmæssigt skruet sammen.
Fx: Hvorfor er det vigtigt, at man ikke kan logge på før session er
udløbet ? Du skriver at du indsætter brugerid + timestamp i en tabel -
men hvis brugeren lukker sin browser og forsøger at logge ind igen -
hvorfor overskriver du så ikke blot tidsstemplet med et nyt ?
--
Jesper Stocholm
http://stocholm.dk
http://asp.stocholm.dk
Svar til gruppen og ikke til mig privat pr. email :|
| |
Torben Jensen (14-05-2003)
| Kommentar Fra : Torben Jensen |
Dato : 14-05-03 07:33 |
|
"Jesper Stocholm" <j@stocholm.invalid> skrev i en meddelelse
news:Xns937A9592A554Dspamstocholmdk@130.226.1.34...
>
> Hvad bruger du sessionid til ... og hvordan finder du i øvrigt dette ID ?
>
Det måtte jeg lige undersøge. Det viser sig faktisk at det ikke er serverens
sessionID, men et unikt nummer som på en eller anden måde bruges til at
identificere sessionsforekomsten i tabellen.
Hvorfor det er lavet sådan kan jeg ikke lige gennemskue
> Hvorfor opdaterer du ikke bare tabellen med brugerid - altså opdaterer
> tidsstemplet ?
Her tabte du mig, kan du uddybe det lidt?
> Hvis det er dit design, der blokerer for din løsning, så kunne du måske
> overveje om det var dit design, der var uhehsigtsmæssigt skruet sammen.
Der er tale om et forholdsvist stort intranet, hvor designet ikke bare sådan
lige laves om. Det behøver det nu heller ikke, der er bare nogle ting jeg
kunne tænke mig foregik lidt anderledes, derfor interessen for emnet.
>
> Fx: Hvorfor er det vigtigt, at man ikke kan logge på før session er
> udløbet ? Du skriver at du indsætter brugerid + timestamp i en tabel -
> men hvis brugeren lukker sin browser og forsøger at logge ind igen -
> hvorfor overskriver du så ikke blot tidsstemplet med et nyt ?
>
Det har du ret i, det undrer også mig en lille smule.
Det havde jeg ikke lige overvejet, det vil jeg lige fundere lidt over.
M.v.h.
Torben Jensen
| |
Jesper Stocholm (14-05-2003)
| Kommentar Fra : Jesper Stocholm |
Dato : 14-05-03 07:47 |
|
Torben Jensen wrote :
>
> "Jesper Stocholm" <j@stocholm.invalid> skrev i en meddelelse
> news:Xns937A9592A554Dspamstocholmdk@130.226.1.34...
>>
>> Hvad bruger du sessionid til ... og hvordan finder du i øvrigt dette
>> ID ?
>>
> Det måtte jeg lige undersøge. Det viser sig faktisk at det ikke er
> serverens sessionID, men et unikt nummer som på en eller anden måde
> bruges til at identificere sessionsforekomsten i tabellen.
> Hvorfor det er lavet sådan kan jeg ikke lige gennemskue
>
>> Hvorfor opdaterer du ikke bare tabellen med brugerid - altså
>> opdaterer tidsstemplet ?
>
> Her tabte du mig, kan du uddybe det lidt?
Dit problem må opstå, når en bruger har en session hængende på serveren.
Når vedkommende så forsøger at logge ind igen, så kan systemet se, at hun
"allerede er logget ind" - og der nægtes adgang.
Det jeg spørger om er, hvorfor du ikke blot laver en update af din tabel
med online brugere. Du kan så opdatere tabellen med et nyt tidsstempel.
Det kunne være noget i denne retning (semi-pseudokode)
dim sSql,rs,loginnumber
sSql = "SELECT COUNT(*) As CountOfLogins FROM Table1 WHERE userid = '" Request.form("email") & "'"
rs = oCon.Execute(sSql)
loginumber = rs("CountOfLogins")
if loginnumber > 0 then
'update table
sSql = "UPDATE Table1 SET timestamp = Now WHERE userid = '" & Request.form("email") & "'"
else
'insert data into table
sSql = "INSERT INTO Table1 (userid,timestamp) VALUES ('" & Request.form("email") & "','" & Now & "')"
end if
oCon.Execute(sSql)
.... eller noget i den retning
--
Jesper Stocholm - http://stocholm.dk
www.asp-faq.dk: FAQ for dk.edb.internet.webdesign.serverside.asp
www.usenet.dk/netikette/citatteknik.html: Skriv under det du svarer på
Svar venligt til gruppen og ikke til mig privat !
| |
Torben Jensen (14-05-2003)
| Kommentar Fra : Torben Jensen |
Dato : 14-05-03 12:06 |
|
> Dit problem må opstå, når en bruger har en session hængende på serveren.
> Når vedkommende så forsøger at logge ind igen, så kan systemet se, at hun
> "allerede er logget ind" - og der nægtes adgang.
>
> Det jeg spørger om er, hvorfor du ikke blot laver en update af din tabel
> med online brugere. Du kan så opdatere tabellen med et nyt tidsstempel.
>
> Det kunne være noget i denne retning (semi-pseudokode)
>
> dim sSql,rs,loginnumber
> sSql = "SELECT COUNT(*) As CountOfLogins FROM Table1 WHERE userid = '"
Request.form("email") & "'"
> rs = oCon.Execute(sSql)
> loginumber = rs("CountOfLogins")
> if loginnumber > 0 then
> 'update table
> sSql = "UPDATE Table1 SET timestamp = Now WHERE userid = '" &
Request.form("email") & "'"
> else
> 'insert data into table
> sSql = "INSERT INTO Table1 (userid,timestamp) VALUES ('" &
Request.form("email") & "','" & Now & "')"
> end if
> oCon.Execute(sSql)
>
> ... eller noget i den retning
>
>
Ja, det har du ret i. I de baner havde jeg ikke lige tænkt.
Tak for tippet.
M.v.h.
Torben Jensen
| |
Jørn Andersen (16-05-2003)
| Kommentar Fra : Jørn Andersen |
Dato : 16-05-03 14:35 |
|
On Tue, 13 May 2003 12:42:12 +0000 (UTC), Jesper Stocholm
<j@stocholm.invalid> wrote:
>Torben Jensen wrote :
>> Her fortæller systemet så brugeren, at det kan han ikke, da han
>> allerede er logget in.
>
>Hvorfor opdaterer du ikke bare tabellen med brugerid - altså opdaterer
>tidsstemplet ?
Er det ikke nemmere bare at sætte en Session.Abandon på Login-siden?
Effekten er selvfølgelig, at når man går ind på login-siden, så logges
der først ud. Det plejer jeg at bruge - og har ikke haft problemer med
det.
Good luck!
--
Jørn Andersen,
Brønshøj
| |
Jesper Stocholm (12-05-2003)
| Kommentar Fra : Jesper Stocholm |
Dato : 12-05-03 14:20 |
|
Torben Jensen wrote :
> Som jeg kan forstå, så findes der desværre ikke nogen måde at håndtere
> det på.
> Med fare for at bevæge mig ud i periferien, så vil jeg alligevel
> spørge - det kan man da i eksempelvis asp.net, ikke? Et ja, eller nej
> rækker, så skal jeg nok selv tage det op i den passende gruppe på et
> senere tidspunkt.
Det er vigtigt at holde sig for øje, at sessions er noget, der oprettes,
nedlægges og vedligeholdes på serveren. Der sker absolut intet på
klienten udover at der i en cookie medtages et ID for den session, som
brugeren nu er i gang med.
Derfor kan jeg ikke forestille mig, at ASP.Net kan hjælpe dig. Dit
problem er jo sådan set, hvordan du får en browser til at sige "Hey, jeg
daffer" til en server i det øjeblik vinduet lukkes.
Har du løst det problem, så er dit problem også løst. Mig bekendt kan det
dog ikke lade sig gøre på andre måder end noget clientside script. Det
bruges fx på bla. www.nightleif.dk, hvor det virker som det skal - har
jeg indtryk af.
--
Jesper Stocholm - http://stocholm.dk - http://asp-faq.dk
Skriv venligst under det du svarer på og skær det overflødige væk.
Se evt hvorfor på http://www.usenet.dk/netikette/citatteknik.html
Svar venligt til gruppen og ikke til mig privat !
| |
Jonas Schmeltz Aaber~ (12-05-2003)
| Kommentar Fra : Jonas Schmeltz Aaber~ |
Dato : 12-05-03 20:07 |
|
Kan man så ikke lave en usynlig frame, der opdateres f.eks. hvert 30.
sekund via en meta-tag el. lign., som sørger for at opdatere sessionen, og
så når man så lukkker vinduet, kaldes denne side jo ikke mere, og sessionen
løber ud på eksempelvis 30 sek.?????
Jeg ved ikke hvor store intervallerne skal være, og hvor meget det vil
belaste serveren?!
Jonas (aka Juke)
--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
Jesper Stocholm (12-05-2003)
| Kommentar Fra : Jesper Stocholm |
Dato : 12-05-03 20:20 |
|
Jonas Schmeltz Aaberg wrote :
> Kan man så ikke lave en usynlig frame, der opdateres f.eks. hvert 30.
> sekund via en meta-tag el. lign., som sørger for at opdatere
> sessionen, og så når man så lukkker vinduet, kaldes denne side jo ikke
> mere, og sessionen løber ud på eksempelvis 30 sek.?????
> Jeg ved ikke hvor store intervallerne skal være, og hvor meget det vil
> belaste serveren?!
Jeg synes ikke, at din løsning er særlig "smuk". Det er imo en uskik at
lave løsninger, hvor en vigtig funktionalitet er afhængig af at en side
reloades hvert 30. sekund.
Du kunne dog vælge at anvende frames og have én hovedframe og ellers åbne
alle andre sider i en anden frame. I din hovedframe kan du så teste på
onunload() i dit body-element. På den måde kan du, når browseren går væk
fra din side, fx åbne et lille nyt vindue, der sletter brugerens session.
--
Jesper Stocholm - http://stocholm.dk
www.asp-faq.dk: FAQ for dk.edb.internet.webdesign.serverside.asp
www.usenet.dk/netikette/citatteknik.html: Skriv under det du svarer på
Svar venligt til gruppen og ikke til mig privat !
| |
Jens Gyldenkærne Cla~ (12-05-2003)
| Kommentar Fra : Jens Gyldenkærne Cla~ |
Dato : 12-05-03 15:11 |
|
Chrisser skrev:
> Prøv engang at udskrive en af dine sessonvariable på en af
> dine sider. Logind, kig på din session og luk vinduet. Åbn en
> browser og kald den pågældende side frem.
> Sessionsvariablen er den samme....fordi sessionsID kommer fra
> klientmaskinen - den genkendes af serveren, og hvis der ikke
> er gået 10 minutter kan de kende hinanden
Det virker ikke her (testet med IE og Mozilla). Jeg har gjort
følgende:
a) åbnet en side der kræver login
b) indtastet login-oplysninger (der gemmes som session-variable)
c) valgt en side der kun kan vises når man er logget ind
d) lukket browseren
e) åbnet browseren igen
f) forsøgt at vise siden fra c)
I begge browsere blev jeg viderestillet til loginsiden.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html
| |
|
|