Avatar billede mhoffmann Nybegynder
12. november 2006 - 06:50 Der er 11 kommentarer og
1 løsning

Login check med session

Jeg er ved at lave nogle forskellige kunde websider, som ligger i hver deres mappe på webserveren. Man skal logge ind med brugernavn og pw som den checker om er rigtig i en access db. Hvis det er det laver den en session med værdien "rigtig".

På alle under-sider checkes om session står til rigtig, og hvis ikke sendes brugeren til login siden.

MEN..hvis man logger ind på en siden, og så taster URLen på en af de andre kunde websider, så er session = rigtig og man får adgang til den anden kundewebside...

Hvordan forhindre jeg det i forhold til den måde jeg styrer login på nu?

Tak
Avatar billede Jman Praktikant
12. november 2006 - 08:07 #1
Du kan enten lave din session om til en variabel, hvor du tjekker at session = kundemappens navn eller også kan du lave en cookie, hvor du både tjekker at brugernavn, password og mappenavn er rigtig.
Sidstnævnte er nok mere sikker, men så skal kunden også acceptere cookkies ;)
Avatar billede ffsoft Praktikant
12. november 2006 - 13:17 #2
Du kan se et check ind system her: www.ffforening.dk "Min side"
og du kan hente kode og læse om hvordan det er lavet her:
www.ffsoft.dk "Eksempler"
Avatar billede mhoffmann Nybegynder
12. november 2006 - 20:40 #3
superior: Din første løsning lyder som en mulighed. Jeg forstår godt grund ideen i det, men kan du forklare mig lidt mere detaljeret hvordan jeg kan gøre det?
Avatar billede Jman Praktikant
12. november 2006 - 20:49 #4
ja, men så er du nødt til at gi lidt kode :)
Avatar billede mhoffmann Nybegynder
12. november 2006 - 23:44 #5
Her er koden der bruges til selve login:

<%
' Her defineres de variable der bruges
Dim kode, sqlkode

' Variablen kode nulstilles
kode = ""

'Her hentes det brugernavn fra db der svarer til det brugernavn der er indtastet og
'sammenholdes hermed med password
if request.form("brugernavn") <> "" then
    set Database= Server.CreateObject("ADODB.Connection")
    Database.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("Database/Login.mdb") & ";UID=; PWD=;"
    sqlkode = "SELECT Login.*, Login.Navn FROM Login WHERE (((Login.Navn)='"& request.form("brugernavn") &"')) ;"
    set recordset=Database.Execute(sqlkode)
        if not recordset.eof then
            if recordset.fields("password") = request.form("password") then
            Session("name") = recordset.fields("Navn")
            kode = "rigtig"
            Else 
            kode = "forkert"
            end if
        end if
end if

'Session (valid) sættes til hhv. rigtig eller forkert afhængig om login var succesfuld
Session("valid") = kode
if session("valid") <> "" then
response.redirect "default.asp?status=login2"
end if
%>



På hver side der er PW beskyttet har jeg så følgende kode:

<%if session("valid") = "rigtig" then%>

SELVE SIDEN

<%else%>
<%response.redirect "default.asp?status=login"%>
<% End If %>
Avatar billede ffsoft Praktikant
16. november 2006 - 15:55 #6
Efter korrekt logon tildeler du kunden ( i sessionen ) det kundenummer
som mappen har i filssytemet.
Ved sideindlæsning checker du som om kunden er i den mappe han har
ret til.

session("KundeNr") = strMappeNavn


Check på hver side:
if session("KundeNr") = strMappeNavn
'
else
response.redirect("nono.asp")
end if
Avatar billede ffsoft Praktikant
16. november 2006 - 15:59 #7
Der manglede lige et then:

if session("KundeNr") = strMappeNavn then

med mindre at hver kundeside er meget forsakellig fra de andre
skulle du overveje at lave en generisk kundeside.
På logon siden kan der så være et skjult mærke med kundenummeret
som overføres til kundesiden. Så er der ingen mulighed for at tilgå
andres sider ved at skrive i url'en
Avatar billede mhoffmann Nybegynder
16. november 2006 - 20:25 #8
Hej ffsoft. Tak for dit indlæg. Jeg har travlt for tiden, men jeg kigger på det hurtigst muligt og vender tilbage.
Avatar billede mhoffmann Nybegynder
19. november 2006 - 01:16 #9
Det virkede :-).

Da superio kom med forslaget til hvordan det kunne gøres, men ffsoft kom med brugervejledningen til hvordan det skulle gøres vil jeg dele pointene mellem jer begge to - med mindre der er nogen af jer der ikke er enig i det.

Læg venligst et svar begge to så jeg kan dele pointene ud

Tak for hjælpen
Avatar billede ffsoft Praktikant
19. november 2006 - 14:03 #10
Et svar .0)
Avatar billede mhoffmann Nybegynder
28. november 2006 - 03:21 #11
Ligger du et svar også superior eller skal jeg bare tildele ffsoft pointene?
Avatar billede mhoffmann Nybegynder
13. december 2006 - 18:32 #12
Da superior ikke har reageret på mit indlæg, tildeler jeg alle pointene til ffsoft.
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