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

Gestione account utente, ruoli, permessi, autenticazione PHP e MySQL

Se stai creando un'applicazione web che prevede la creazione, la lettura, l'aggiornamento e l'eliminazione di informazioni di qualsiasi tipo, sarà molto comune che i privilegi per eseguire queste diverse operazioni sui dati dovranno essere condivisi tra i tuoi utenti in base ai loro diversi ruoli e autorizzazioni sulla tua applicazione.

Prendi ad esempio un'applicazione di gestione della scuola. Gli utenti di tale applicazione rientrano in genere nelle categorie:Studenti, Docenti, Dirigenti (HOD) e così via. La tua domanda NON dovrebbe consentire a uno studente di avere il privilegio di aggiungere o aggiornare i risultati per gli esami del semestre. Questa sarebbe la funzione di un insegnante. E quando un nuovo corso o materia deve essere aggiunto al curriculum, è compito solo del Capo Dipartimento aggiungere quel corso al sistema.

Su un tale sistema, possiamo fare riferimento a Studente, Insegnante, HOD (Capo Dipartimento) come i diversi ruoli nella nostra applicazione. Per quanto riguarda azioni come l'aggiunta e l'aggiornamento dei risultati degli studenti, l'aggiunta di nuovi corsi, le chiameremo autorizzazioni.

Dalla spiegazione fin qui si può già dedurre che un Utente avrà un Ruolo e un ruolo avrà più Permessi. Ad esempio, John (un utente) avrà un ruolo (Studente) e più autorizzazioni (iscrizione al corso, visualizzazione dei voti, stampa della trascrizione, ecc.).

Ciò significa che nel nostro database MySQL avremo bisogno di 3 tabelle principali del database:utenti, ruoli e autorizzazioni. Ci viene richiesto di avere una relazione Molti-a-uno tra utenti e tabelle di database dei ruoli (un ruolo appartiene a molti utenti) e una relazione Molti-a-molti tra ruoli e tabelle delle autorizzazioni (molti permessi possono essere assegnati a molti ruoli) .

Il modo in cui ti riferisci a questi ruoli dipende da te. Nel nostro esempio, abbiamo utilizzato Studente, Insegnante, HOD per rappresentare i ruoli perché l'esempio riguardava un'applicazione di gestione della scuola. Se stavi lavorando su un'applicazione di gestione dell'hotel, i ruoli potrebbero essere qualcosa come Manager, Addetto alle pulizie, Receptionist e simili.

In questo tutorial, stiamo costruendo un sistema di gestione degli account utente per un'applicazione blog. Quindi faremo riferimento a questi ruoli come Autore, Editore e Amministratore. Ovviamente puoi cambiarli a tuo piacimento, ma questi tre sono quasi uno standard per i sistemi di gestione dei contenuti.

Verrà implementato un sistema completo di registrazione e accesso amministratore/utente. Tutti gli utenti accederanno tramite lo stesso modulo di accesso e una volta effettuato l'accesso, solo gli utenti amministrativi (autori, editori, amministratori) avranno accesso alla dashboard di amministrazione mentre gli utenti normali verranno reindirizzati alla home page pubblica.

Creeremo una tabella del database dei post nel nostro database in modo da avere qualcosa su cui testare i nostri permessi. Ad esempio, un utente con il ruolo di Editor potrà modificare, aggiornare, pubblicare, annullare la pubblicazione ed eliminare tutti i post, mentre un autore disporrà solo dell'autorizzazione per creare, leggere, aggiornare ed eliminare solo i post che sono stati creati da loro stessi. L'amministratore avrà l'autorizzazione per creare, aggiornare, eliminare altri utenti e ruoli amministrativi e anche per assegnare/annullare autorizzazioni a ruoli e ruoli agli utenti.

NOTA:ho già realizzato un tutorial sulla creazione di un'applicazione blog completa da zero. Quindi non implementeremo effettivamente la creazione, l'eliminazione e l'aggiornamento dei post qui. Dimostreremo semplicemente come funzionano queste autorizzazioni intorno ai post. Se vuoi imparare a creare un blog con i post, dai un'occhiata al mio altro tutorial su come creare un blog in PHP.

Struttura della directory di progetto.

Crea una cartella di progetto denominata account-utente e quindi crea altre tre cartelle al suo interno:admin, include, asset, ognuna con le seguenti sottocartelle:

admin:questa cartella contiene il codice sorgente per la parte admin dell'applicazione. In questa cartella, crea altre tre cartelle, ovvero post, ruoli, utenti.

asset:conterrà file pubblici a cui accederà il browser come immagini, css, js. Quindi, all'interno delle risorse, crea immagini, cartelle css e js.

include:Questo conterrà patch di codice sorgente per la nostra applicazione che possiamo includere in diversi punti della nostra applicazione. All'interno di questa cartella, crea altre due cartelle:layout e logica.

A questo punto, la struttura del nostro progetto è pronta. Ora possiamo iniziare a codificare il sistema. Lo faremo nella prossima parte di questo tutorial.

Grazie per l'attenzione e spero di vedervi nella prossima parte.