sql >> Database >  >> RDS >> Mysql

Gebruikersaccountbeheer, rollen, machtigingen, authenticatie PHP en MySQL

Als u een webtoepassing bouwt waarbij informatie van welke aard dan ook moet worden gemaakt, gelezen, bijgewerkt en verwijderd, is het heel gebruikelijk dat de rechten om deze verschillende bewerkingen op gegevens uit te voeren, moeten worden gedeeld door uw gebruikers op basis van hun verschillende rollen en machtigingen voor uw toepassing.

Neem bijvoorbeeld een applicatie voor schoolbeheer. Gebruikers van een dergelijke applicatie vallen doorgaans in de categorieën:studenten, docenten, afdelingshoofden (HOD), enzovoort. Uw aanvraag mag een student NIET het voorrecht geven om hun resultaten voor de semesterexamens toe te voegen of bij te werken. Dat zou de functie van een Leraar zijn. En als er een nieuwe cursus of vak aan het curriculum moet worden toegevoegd, is het de taak van alleen het afdelingshoofd om die cursus aan het systeem toe te voegen.

Op een dergelijk systeem kunnen we verwijzen naar student, docent, HOD (afdelingshoofd) als de verschillende rollen in onze applicatie. Wat betreft acties zoals het toevoegen en bijwerken van leerlingresultaten, het toevoegen van nieuwe cursussen, zullen we dit de rechten noemen.

Uit de uitleg tot nu toe kan al worden afgeleid dat een Gebruiker één Rol zal hebben en een rol meerdere Permissies. John (een gebruiker) heeft bijvoorbeeld één rol (student) en meerdere machtigingen (cursus registreren, cijfers bekijken, transcript afdrukken, enz.).

Dit betekent dat we in onze MySQL-database 3 hoofddatabasetabellen nodig hebben:gebruikers, rollen en machtigingen. We zijn verplicht om een ​​Many-To-One-relatie te hebben tussen gebruikers en rollendatabasetabellen (Eén rol behoort tot Vele gebruikers) en een Many-To-Many-relatie tussen rollen en machtigingentabellen (Veel machtigingen kunnen worden toegewezen aan Vele rollen) .

De manier waarop u naar deze rollen verwijst, is aan u. In ons voorbeeld hebben we Student, Teacher, HOD gebruikt om de rollen weer te geven, omdat het voorbeeld ging over een toepassing voor schoolbeheer. Als u aan een hotelbeheertoepassing werkte, kunnen de rollen zoiets zijn als manager, schoonmaker, receptioniste en dergelijke.

In deze zelfstudie bouwen we een beheersysteem voor gebruikersaccounts voor een blogtoepassing. We zullen deze rollen dus aanduiden als auteur, redacteur en beheerder. Je kunt ze natuurlijk naar wens wijzigen, maar deze drie zijn bijna een standaard voor contentmanagementsystemen.

Er wordt een volledig admin-/gebruikersregistratie- en inlogsysteem geïmplementeerd. Alle gebruikers loggen in via hetzelfde inlogformulier en als ze eenmaal zijn ingelogd, hebben alleen beheerders (auteurs, redacteuren, beheerders) toegang tot het beheerdersdashboard, terwijl normale gebruikers worden doorgestuurd naar de openbare startpagina.

We zullen een databasetabel met berichten in onze database maken, zodat we iets hebben om onze rechten op te testen. Een gebruiker met de rol van redacteur kan bijvoorbeeld alle berichten bewerken, bijwerken, publiceren, depubliceren en verwijderen, terwijl een auteur alleen de rechten heeft om alleen die berichten te maken, te lezen, bij te werken en te verwijderen. door henzelf gecreëerd. De beheerder heeft de rechten om andere beheerders en rollen te maken, bij te werken en te verwijderen, en ook om rechten toe te wijzen aan rollen en rollen aan gebruikers.

OPMERKING:ik heb al een tutorial gemaakt over het helemaal opnieuw maken van een complete blogtoepassing. We zullen het maken, verwijderen en bijwerken van berichten hier dus niet daadwerkelijk implementeren. We zullen alleen laten zien hoe deze machtigingen werken rond berichten. Als je wilt leren hoe je een blog met berichten kunt maken, bekijk dan mijn andere tutorial over het bouwen van een blog in PHP.

Projectmapstructuur.

Maak een projectmap met de naam gebruikersaccounts en maak daarin drie andere mappen:admin, include, assets, elk met de volgende submappen:

admin:Deze map bevat de broncode voor het admin-gedeelte van de applicatie. Maak in deze map drie andere mappen, namelijk posts, rollen, gebruikers.

activa:dit bevat openbare bestanden die door de browser worden geopend, zoals afbeeldingen, css, js. Dus binnen activa, maak afbeeldingen, css- en js-mappen.

omvat:Dit bevat patches met broncode voor onze applicatie die we op verschillende plaatsen in onze applicatie kunnen opnemen. Maak in deze map twee andere mappen:lay-outs en logica.

Op dit punt is onze projectstructuur helemaal klaar. We kunnen nu beginnen met het coderen van het systeem. We zullen dat in het volgende deel van deze tutorial doen.

Bedankt voor uw aandacht en ik hoop u in het volgende deel te zien.


  1. Panda's schrijven dataframe naar ander postgresql-schema

  2. Rails Console vindt gebruikers op reeks id's

  3. Een functie met tabelwaarde maken in SQL Server

  4. Automatisch antwoordbestand genereren