29. januar 2005 - 17:33Der er
19 kommentarer og 1 løsning
Brugerdifferenceret login - best practic
Jeg skal have lavet et brugerdifferenceret login til et sitet. Meningen er at administratoren skal have adgang til hele systemet, og de forskellige brugertyper, skal så kun se det som vedrører dem.
Men hvordan skal dette gøres mest korrekt?
Skal jeg i DB'en ligger et felt indeholdende f.eks. 1, 2, 3..., hvor de forskellige tal, er symboler for den enkelte brugertype?
Eller skal jeg gøre det via session, som jeg i forvejen har implementeret i det nuværende login (kun én bruger), og hvordan skal dette så gøre?
Jeg synes du skal kombinere de to muligheder du har skitseret. Altså have oplysninger for hver enkelt bruger liggende i databasen og så ligge dem i en session til brug på de forskellige sider.
Bl.a. brugeroplysningerne, skal jeg på hver tabel lave et felt som indeholder brugertype, henunder brugertabel, og så sammenlignede dem, og hvordan kobler jeg det sammen med session?
Lige nu sætte jeg bare en bruger-sessionvariabel, og tjekker så på admin-siderne om denne er sat.
Du har vel kun en tabel med brugeroplysninger. Der kan du tilføje feltet status med de forskellige levels af rettigheder. Den ligger du så i en session variabel ligesom brugernavnet.
Jeg har iløbet af dagen rundet med det, og har faktisk også fået det til at virke, men jeg vil godt lige have tjekket om det er den "korrekte" måde at gøre det på.
Først tjekker jeg om session-variablen bruger er sat, ellers får de ikke lov til at komme ind på siden.
Derefter laver jeg alle de forskellige if-sætninger ved menupunkterne. Så de forskellige typer kun kan se, de menupunkter som de må.
Er det godt nok, eller kan det gøres smartere. Nu har jeg godt nok kun 2 brugertyper pt, men hvis der skulle bliver mange forskellige, og de skal kunne se forskellige punkter, så tror jeg menu-koden bliver noget indviklet, eller hva'?
Nu ved jeg ikke hvor mange menuer det drejer sig om, men hvis du har mange kan det måske betale sig at ligge dem i databasen og give dem en status der. Hvis du fx bruger et felt af typen SET, kan du hente nøjagtigt de menuer der passer til brugerens status. Her er et eksempel der viser hvad jeg mener:
Det er sådan med et felt af typen SET, har de enkelte værdier osse en binær værdi. Så hvis du fx har 4 mulige input i SET feltet, får de binær værdierne 1,2,4,8. Så forespørgslen er korrekt med: status & $status. Spørgsmålet er om det vil være overkill at gøre det på den måde?
Ja, det var mere en ide hvis dit menu/bruger system er meget omfattende. Ellers lav det på en enklere måde. Hvis du kan dele menuerne op i blokke, bliver det jo kun en if sætning til hver brugertype.
Selvfølgelig og det har jeg faktisk også gjort, det var så heldigt at de faktisk lå i blokke i forvejen...
Men på et andet sitet, jeg er ved at lave kommer jeg op på minimum 20 brugertype, så der ville det jo være bedst at gøre det korrekt. Derfor kunne jeg godt tænke mig, at få løst problemet, men jeg må indrømme, at jeg godt nok er rundt på gulvet lige nu.
Det letteste, og alligevel effektivte, vil nok være at tildele hver bruger en status. Ligeledes en status til hver af menuerne. Så kan du udtrække de relevante menuer med en if sætning:
Nå okay, så hver "gruppe" i menuen vil få en status, som jeg så kan sammenligne med i brugertabellen. Hermed mener jeg at 2 forskellige menuer godt kan have den samme status overført til brugertypen.
Jeg har ikke haft tid til at få det til at virke perfekt endnu, men tro nok jeg har en ide om hvordan det skal gøres. Tak for hjælpen, detox, ligger du et svar?
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.