12. november 2006 - 06:50Der 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?
Hos Computerworld it-jobbank er vi stolte af at fortsætte det gode partnerskab med folkene bag IT-DAY – efter vores mening Danmarks bedste karrieremesse for unge og erfarne it-kandidater.
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 ;)
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?
<% ' 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 %>
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
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
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
Da superior ikke har reageret på mit indlæg, tildeler jeg alle pointene til ffsoft.
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.