Avatar billede cool_code Nybegynder
12. marts 2002 - 22:35 Der 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...


Avatar billede sys64738 Nybegynder
12. marts 2002 - 22:45 #1
1) if session("LoginAuthenticated") = true then
      ...
      hele din side
      ...
  else
      response.redirect ("Side1.asp")
  end if


2) Session.abandon
Avatar billede coltau Juniormester
12. marts 2002 - 22:46 #2
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") = ""
Avatar billede cool_code Nybegynder
12. marts 2002 - 22:50 #3
Ok, jeg skal lige have tjekket jeres muligheder. Jeg vender tilbage lige om et øjeblik........
Avatar billede coltau Juniormester
12. marts 2002 - 22:50 #4
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.
Avatar billede cool_code Nybegynder
12. marts 2002 - 23:19 #5
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?
Avatar billede coltau Juniormester
12. marts 2002 - 23:34 #6
Du skal sikre dig at der bliver fyldt noget i Session("user") på side 2 hvis bruger bliver godkendt.

Session("user") = Request.Form("Brugernavn") ' Hvis input på side 1 ser således ud. <input type="text" name="brugernavn" osv ...
Avatar billede cool_code Nybegynder
12. marts 2002 - 23:35 #7
Ja, det har jeg lige fundet ud af. Jeg skrev bare Session("godkendt"). Jeg skulle have skrevet Session("godkendt") = streng;

Jeg nærmer mig en løsning. Jeg vender lige tilbage...........
Avatar billede excession Nybegynder
13. marts 2002 - 00:50 #8
er det bedre at bruge isEmpty(session("godkendt")) istedet for = "" ?

jeg spørger fordi jeg ikke ved det selv.. kunne være der var noget der var bedre at bruge..

-- xs
Avatar billede cool_code Nybegynder
13. marts 2002 - 01:04 #9
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.
Avatar billede coltau Juniormester
13. marts 2002 - 08:47 #10
Må vi se kontrollen på side 2. ?

if Session("godkendt") = "" then
  Response.Redirect("side1")
end if
Avatar billede sylvester1 Nybegynder
13. marts 2002 - 08:51 #11
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...
Avatar billede excession Nybegynder
13. marts 2002 - 11:50 #12
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

-- xs
Avatar billede cool_code Nybegynder
13. marts 2002 - 12:07 #13
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...

Bliv på linien.........

/cool_code
Avatar billede coltau Juniormester
13. marts 2002 - 13:37 #14
Eller den her:

if IsEmpty(Session("user")) then
  Response.Redirect("side1")
end if
Avatar billede cool_code Nybegynder
13. marts 2002 - 13:43 #15
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.......

/cool_code
Avatar billede excession Nybegynder
13. marts 2002 - 13:46 #16
Avatar billede cool_code Nybegynder
20. marts 2002 - 22:01 #17
Jeg har endnu ikke fået sessions til at køre med JavaScript ????
Avatar billede cool_code Nybegynder
16. april 2002 - 22:31 #18
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
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
Kurser inden for grundlæggende programmering

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