06. maj 2005 - 10:29Der er
21 kommentarer og 1 løsning
Hvorfor bliver jeg logge af
Jeg er lige begyndt at arbejde med asp.net.
Jeg har oprette en side med et administrationsmodul. Når man skal bruge administrationsmodulet, skal man naturligvis logge ind. Mit problem er, at mens man sidder og bruger modulet, bliver man på tilfældige steder logget ud. Det er ikke fordi den timer ud. Det kan opstå ved at jeg sidder og skifter frem og tilbage mellem to sider (IKKE på frem og tilbage-knapperne i browseren), og så lige pludselig bliver man logget ud. Jeg ved ikke, om det er pga. at serveren på en eller anden måde løber tør for nogle ressourcer, og derfor genstarter sites eller sessionen. Den er på ingen måder overbelastet.
I kan i min web.config-fil se, hvordan jeg godkender brugerne: <configuration> <location path=""> <system.web> <compilation debug="true"/> <authentication mode="Forms"> <forms name="login" path="/" loginUrl="/admin/login.aspx" protection="All" timeout="20" /> </authentication> <authorization> <allow users="*" /> </authorization> <httpRuntime maxRequestLength="512000" /> <pages enableSessionState="false" /> </system.web> </location> <location path="admin"> <system.web> <authorization> <deny users="?" /> </authorization> </system.web> </location> </configuration>
har du prøvet at sætte slidingExpiration="true" ? det skulle gerne gøre, at din cookie udløber <timeout> efter sidste request - alternativnt kan du angive at din cookie skal være persistent når du laver et RedirectFromLogIn - kald.
du kan eventuelt vise lidt kode for hvordan du gør diverse omkring login....
Når en bruger bliver godkendt, bruger jeg: FormsAuthentication.RedirectFromLoginPage(sUsername.Text,False)
Hvor sætter jeg de to ting, du foreslår? Er "slidingExpiration="true"" i web.config-filen? Skal jeg skrive "FormsAuthentication.RedirectFromLoginPage(sUsername.Text,True)" i stedet for? Er det ikke bare så den husker mit password til næste gang?
true i RedirectFromLogInPage gør at den cookie der lægges på brugerens maskine ikke timer ud, hvorfor det virker som om man stadig er logget ind når man går ind på siden senere. jeps - slidingexpiration sætter du i web.config i dit forms-element, hvor du også har timeout stående.
du skal ikke gøre begge dele... du skal enten prøve at gøre din cookie persistant ved at angive true i RedirectFromLogin ELLER sætte slidingExpiration true i web.config.
du kan jo lige prøve det, og se om det hjælper .... ellers må vi jo bare søge videre efter det :o)
OK, jeg kan godt se, hvad true i RedirectFromLoginPage gør. Hvis man genstarter browseren, er man stadig logget på. Men det hjalp desværre ikke på mit problem. Jeg bliver stadig logge ud tilfældigt.
Jeg skulle bare indsætte slidingExpiration="true" sådan her: <forms name="login" path="/" loginUrl="/admin/login.aspx" protection="All" timeout="20" slidingExpiration="true" />
Ja, jeg har to andre steder. Jeg har lavet en knap, hvor man kan logge ud. Der bruger jeg "FormsAuthentication.SignOut()". I headeren på alle siderne, tjekker jeg om brugeren har rettigheder til at se denne side. Hvis vedkommende ikke har rettigheder, bruger jeg også "FormsAuthentication.SignOut()".
For at se om disse to havde nogen betydning, har jeg prøvet at fjerne begge to. Det hjalp desværre heller ikke.
det foresvæver mig at jeg er stødt på den slags på nettet.... de links du sidder og skifter imellem - er det tænkeligt at du ikke er konsistent med case ? f.eks. default.aspx / Default.asp. (jeg prøver lige om jeg kan finde noget om det) mvh
Nej desværre. Men det er nu også de samme links jeg sidder op trykker på. Et øjeblik virker linket fint, og det næste øjeblik bliver jeg bare logget ud. Det er dog typisk på nogle lidt ressourcekrævende sider, det sker. F.eks. sker det oftes på sider, hvor jeg bruger et TDC-object (Tabular Data Control) til at hente data ud i en dynamisk tabel. Men der er dog inden konsikvens i det. Nogle gange er det på en krævende side, andre gange på en simpel side.
det lyder lidt klamt synes jeg ... prøvede lige at google lidt ... kan se at nogle har problemer med at holde session på iis6.0, men har så forsøgt sig omkring at lægge app i sin egen applicationpool, meeeeen.... jeg ved ikke om man kan finde nogle lighedspunkter mellem den slags. kan du ikke prøve at debugge (eller trace) og se om du rammer dit SignOut() kald ? mvh
Jeg fik lige pludselig travlt med noget andet, så jeg kom ikke så meget videre.
Den ligger på nuværende tidspunkt i DefaultAppPool, men der er ikke anden på serveren, der ligger og belaster. Men jeg prøver lige at lægge den i sin egen, og fortæller den, at den ikke skal time-out.
Hvordan kan jeg debugge/trace, så jeg kan holde øje med, at jeg ikke rammer SignOut()?
hvis du sætter pageOutput="false", vil du ikke se noget på den enkelte side, men du vil kunne finde dit trace på : http://host/site/trace.axd
du skriver til dit trace fra koden med : Trace.Write("et eller andet");
men det er nemmest at debugge, hvis du bruger et udviklingsmiljø som visual studio. hvis du gør det - sætter du sådan set bare et breakpoint i koden (kan du gøre ved at trykke F9 på den linie du gerne vil stoppe ved), og derefter starte med F5.
hvis du ikke bruger visual studio kan det dog også sagtens lade sige gøre - det er bare lidt mere gnidret.
Nu har jeg fundet ud af, at det er hele cookie'en, der bliver nulstillet. Men hvorfor ved jeg ikke. Det vil sige, at jeg også miste nogle forskellige indstillinger, jeg har gemt i cookie'en. Er der en begrænsning for, hvormeget data man kan lægge i en cookie? Kan det være fordi cookie'en fylder for meget?
Nu har jeg endelig styr på det. Det var fordi jeg gemte for mange oplysninger i min cookie. Det resulterede i, at den overskrev mine login oplysninger, og jeg derfor blev logget af.
snepnet: Hvis du vil have dine point, kan du lige sende et svar. Mange tak for hjælpen!
Hehe... endnu engang tak for hjælpen. Her er dine points.
Synes godt om
Ny brugerNybegynder
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.