12. marts 2002 - 22:35Der er
15 kommentarer og 3 løsninger
Hvordan laves sikkerhed med sessions
Hejsa
Jeg har et problem med at forstå teorien bag sessions......
Det jeg ønsker er, at når jeg har en login side (side1), så skal den ved submit gå til side 2. Her skal der laves en kode, så hvis login er korrekt (tjek foregår via database-opslag) så er der adgang til side 2. Hvis man i URL'en bare taster side2 ind (udenom side1 - login), så skal den automatisk diregeres til login-side1.
------------- Spørgsmål 1: Hvordan requester man en session på side2 så ovenstående sikres???? Og hvordan overfører man en session fra side2 til f. eks side3? ----------------------
Når så man ønsker at logge af på side 2, så skal jeg sikre at den session ikke lever videre, f. eks så man kan bruge "back" på browseren, men at jeg kan lave en "Siden forældet"-lignede ting.
------------------ Spørgsmål 2: Hvordan laves dette, og på hvilke sider skal den forskellig kode være på. ---------------------
Jeg håber i forstå mit spørgsmål. I må meget gerne forklare jer med lidt teori og lidt eksempler. Det her med session og forståelsen bag har drillet lidt.....Hvis ikke i forstå, så udyber jeg gerne.
Der gives 25p for hhv spørgsmål 1 og 2 (og evt. lidt for andre guldkorn omkring dise sessions...
1. Hvis godkendt så Session("user") = strUser ' brugernavn fra side1. Denne session("user") vil nu være på alle dine sider. Derfor skal du på alle sider starte med følgende linie:
if Session("user") = "" then Response.Redirect("side1") end if Det vil sende alle til side1 som ikke har været igennem nåleøjet på side 2.
Når vedkommende "logger af" skal du blot udføre denne linie: Session("user") = ""
Sessions lever på alle dine sider så længe brugeren er på din side. Derfor kan du anvende sessions som en ekstra hukommelse hvor du kan gemme variable som du kan se fra alle siderne.
Hvis man på en af dine side kunne vælge en fontstørrelse. Så kan du gemme den valgte fontstørrelse i en session("fontsize") og anvende den på alle sider.
<font size="<%=session("fontsize")%>">Du har selv valgt din fontstørrelse</font>
En slags ekstra hukommelse. Og det bedste er at der oprettes en session for hver bruger der derfor kan se dine sider med hver sin fontstørrelse.
Den version fra coltau ser umiddelbar ud til at virke. Dog har den et problem når der linkes fra side3 til side2.....Så hopper den direkte til side1... Det er som om at session slet ikke bliver sat. Hvis jeg udskriver den så har den ingen værdi.......Kun et id. Hvorfor?
Du har ret xs, men jeg tror at den funktion er er en "Java-ting". I JSP er Session-handling betydelig bedre end i ASP.......Efter min mening. Men nu VIL jeg have det til at virke......Mit problem er nu, at jeg sagtens kan gå fra side1(login) til side2 og derfra til sid3. Fra både side2 og side3 logger jeg også af fint. Men så snart jeg trykker på et link på side3 til side2, så springer den direkte over til side1......Det er min algoritme som virker ad h...... til.
Det virker som om du ikke har din "checker" på dine sikrede sider.. (Dem hvor man skal bruge login) Hvis vi siger du bruger session("loggedIn") som den der fortæller om du er logget ind, så kan du i hver side du vil sikre skrive det her i toppen af din side
<% if len(session("loggedIn"))=0 then response.redirect("login.asp") else %> .... <% end if %>
Du skal selfølgelig huske at sætte session("loggedIn") til en værdi når du logger ind. Så snart din session timeouter, så vil den redirecte til loginsiden når du prøver at gå over på en sikret side...
jeg bør også bruge Session.abandon istedet for at sætte variabler = "" fordi du frigør plads i hukommelsen som var allokeret til de variabler der var i brugerens Session..
Man vil altid have det problem der er ved at man kan klikke tilbage og se sider man ikke burde hvis man er logget af..
én måde at løse det på er ved at vise indhold i én popup og lukke popupen når brugeren logger af
Jeg har ikke glemt jer, men jeg kigger først på jeres forslag i eftermiddag......Umiddelbart er problemet at jeg ikke kan bruge Session("godkendt") == "". Den indeholder nemlig værdien "undefined" (det er værdien hvis jeg skriver den ud, og derfor går den forkert i min checks med Session("godkendt") == "". Så umiddelbart en anden løsning er som Sylvester1 siger, at man checker med Session("godkendt") == 0. Men det tjekker jeg i eftermiddag. Jeg kan lige skrive koden senere hvor det går galt...
Jeg bruger Javascript, og ved ikke om det har noget at sige overfor VBscript........Men jeg har et problem med de funktioner der er tilgængeligt når man laver alt dette. Har i et godt link hvor man f. eks kan se alle de metoder der hører til de forskellige objekter....(Det må vel også belønnes)..... Umiddelbart lyder det som godt hvis den funktion fandtes, men jeg har aldrig hørt om den i Javascript, kun i Java. Men at jeg ikke har hørt om den betyder jo langtfra at den ikke eksisterer.....:-)
Jeg vender stadig tilbage senere med HVOR det går galt.......
Ok, det var en **lang eftermiddag**. Det må i undskylde. Det kører stadigvæk ikke helt 100%. Problemet før var at når den var tom (= "") så var den ikke helt tom alligevel, men stod som "undefined". Nu har jeg lavet det om, så den har en talværdi som 1 hvis man er logget på og ellers 0. Det fungerer for såvidt meget godt. Mit tjek i toppen af hver side er nu:
if (Session.Contents("login") != 1) { Response.Redirect("login.asp?besked=Du+er+ikke+logget+paa"); }
Problemet er så at hvis jeg linker til en side som har ovenstående i toppen, så hopper den direkte på login.asp, hvilket jo ikke burde ske, da Session("login") jo er sat til 1 ???????????:
<a href="index.asp">TRYK HER</a>
Forstod i det sidste???
Jeg giver jer pointene nu, men i må da gerne hjælpe mig helt væk med problemet :-)
coltau og Sylvester ramte bedst. expression var lidt med men gav linket. Derfor pointdelingnen. Er det OK med jer ?
/cool_code
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.