sql >> Database teknologi >  >> RDS >> Mysql

Brugerkontostyring, roller, tilladelser, autentificering PHP og MySQL

Hvis du bygger en webapplikation, der involverer oprettelse, læsning, opdatering og sletning af oplysninger af enhver art, vil det være meget almindeligt, at privilegierne til at udføre disse forskellige handlinger på data skal deles mellem dine brugere i henhold til deres forskellige roller og tilladelser til din applikation.

Tag en skoleledelsesapplikation for eksempel. Brugere af en sådan applikation falder typisk inden for kategorierne:Studerende, Lærere, Institutleder (HOD) og så videre. Din ansøgning bør IKKE tillade en studerende at have privilegiet til at tilføje eller opdatere deres resultater for semesterets eksamener. Det ville være en lærers funktion. Og når et nyt kursus eller emne skal tilføjes pensum, er det kun institutlederens arbejde at tilføje det pågældende kursus i systemet.

På et sådant system kan vi referere til Student, Teacher, HOD (Head of Department) som de forskellige roller i vores ansøgning. Hvad angår handlinger såsom tilføjelse og opdatering af elevernes resultater, tilføjelse af nye kurser, vil vi omtale disse som tilladelserne.

Ud fra forklaringen indtil videre kan man allerede udlede, at en bruger vil have én rolle, og en rolle vil have flere tilladelser. For eksempel vil John (en bruger) have én rolle (Student) og flere tilladelser (registrere kursus, se karakterer, udskrive transskription osv.).

Dette betyder, at vi i vores MySQL-database vil kræve 3 primære databasetabeller:brugere, roller og tilladelser. Vi er forpligtet til at have et mange-til-en-forhold mellem brugere og rolledatabasetabeller (én rolle tilhører mange brugere), og et mange-til-mange-forhold mellem roller og tilladelsestabeller (mange tilladelser kan tildeles til mange roller) .

Den måde, du henviser til disse roller på, er op til dig. I vores eksempel har vi brugt Elev, Lærer, HOD til at repræsentere rollerne, fordi eksemplet handlede om en skoleledelsesapplikation. Hvis du arbejdede på en hoteladministrationsapplikation, kan rollerne være noget i retning af Manager, Cleaner, Receptionist og lignende.

I denne vejledning bygger vi et brugerkontiadministrationssystem til en blogapplikation. Så vi vil referere til disse roller som forfatter, redaktør og administrator. Selvfølgelig kan du ændre dem, som du vil, men disse tre er næsten en standard for indholdsstyringssystemer.

Et komplet admin/bruger registrering og login system vil blive implementeret. Alle brugere vil logge ind via den samme login-formular, og når de er logget ind, vil kun administrative brugere (forfattere, redaktører, administratorer) have adgang til admin-dashboardet, mens normale brugere vil blive omdirigeret til den offentlige hjemmeside.

Vi opretter en opslagsdatabasetabel i vores database for at have noget at teste vores tilladelser på. For eksempel vil en bruger med rollen som redaktør være i stand til at redigere, opdatere, udgive, fjerne og slette alle indlæg, mens en forfatter kun har tilladelse til at oprette, læse, opdatere og slette de indlæg, der er blevet skabt af dem selv. Administrator vil have tilladelse til at oprette, opdatere, slette andre administrative brugere og roller og også til at tildele/fjerne tildeling af tilladelser til roller og roller til brugere.

BEMÆRK:Jeg har allerede lavet en tutorial om at oprette en komplet blogapplikation fra bunden. Så vi vil faktisk ikke implementere oprettelse, sletning og opdatering af indlæg her. Vi vil blot demonstrere, hvordan disse tilladelser fungerer omkring indlæg. Hvis du vil lære, hvordan du opretter en blog med indlæg, så tjek mit andet selvstudium om, hvordan du opbygger en blog i PHP.

Projektkatalogstruktur.

Opret en projektmappe kaldet brugerkonti og opret derefter tre andre mapper inde i den:admin, include, assets, som hver har følgende undermapper:

admin:Denne mappe indeholder kildekoden til admin-delen af ​​applikationen. I denne mappe skal du oprette tre andre mapper, nemlig indlæg, roller, brugere.

aktiver:Dette vil indeholde offentlige filer, som browseren får adgang til, såsom billeder, css, js. Så inde i aktiver, opret billeder, css- og js-mapper.

inkluderer:Dette vil indeholde patches af kildekode til vores applikation, som vi kan inkludere forskellige steder i vores applikation. Inde i denne mappe skal du oprette to andre mapper:layout og logik.

På dette tidspunkt er vores projektstruktur klar. Vi kan nu begynde at kode systemet op. Det vil vi gøre i den næste del af denne øvelse.

Tak for din opmærksomhed, og jeg håber at se dig i næste del.


  1. MySQL-forespørgsel for at få kolonnenavne?

  2. SQL til at generere en liste over tal fra 1 til 100

  3. I Postgresql, fremtving unik på kombination af to kolonner

  4. PostgreSQL array_agg rækkefølge