Sicherheit ist ein entscheidender Faktor bei der Entwicklung einer Website oder Anwendung. So setzen Sie angemessene Berechtigungen für Benutzer und stellen Sie sicher, dass nur Benutzer mit bestimmten Berechtigungen auf die entsprechenden Funktionen und Ressourcen zugreifen können, die jeder Entwickler lösen muss. Rollenbasierte Berechtigungskontrolle (RBAC) ist eine gemeinsame Methode zur Berechnung des Managements. In diesem Artikel wird Sie mithilfe von PHP eine rollenbasierte Authentifizierungssteuerung implementieren.
Bevor wir eine rollenbasierte Berechtigungskontrolle implementieren, müssen wir zunächst die Konzepte der "Rolle" und "Berechtigungen" klären.
Rollen stellen die Identität des Benutzers im System dar. Zum Beispiel "Administrator", "gewöhnlicher Benutzer" usw. Jede Rolle erhält normalerweise unterschiedliche Berechtigungen, um das zu begrenzen, was der Benutzer ausführen kann.
Berechtigungen sind systemdefiniert und bestimmen, welche Aktionen eine Rolle ausführen oder auf welche Ressourcen zugreifen kann. Berechtigungen können "Daten lesen", "Daten ändern" oder "Daten löschen" usw. umfassen.
Durch die Kombination von Rollen und Berechtigungen können Benutzer die Betriebsberechtigungen des Systems effektiv steuern.
Um eine rollenbasierte Berechtigungskontrolle zu implementieren, müssen wir normalerweise die Rolle und die Berechtigungsinformationen in der Datenbank speichern. Wir können zwei Tabellen erstellen: Einen speichert Rolleninformationen und die andere Speicherinformationen. Hier ist ein Beispiel für eine SQL -Anweisung, die Rollen und Berechtigungstabellen erstellt:
Tischrollen erstellen ( ID int auto_increment Primärschlüssel, Nennen Sie Varchar (255) nicht null );
Erstellen Sie Tabellenberechtigungen ( ID int auto_increment Primärschlüssel, Nennen Sie Varchar (255) nicht null );
In der Rollentabelle verwenden wir das Feld "Name", um den Rollennamen zu speichern, und im Feld "Name", um den Erlaubnisnamen zu speichern.
In den tatsächlichen Anwendungen müssen Sie zunächst Rollen und Berechtigungen erstellen und dem Benutzer Rollen und Berechtigungen zuweisen.
Beispielsweise können wir Daten mit den folgenden SQL -Anweisungen in Rollentabellen und Berechtigungstabellen einfügen:
In Rollen (Name) Werte einfügen ('admin'); In Rollen (Name) Werte einfügen ('Benutzer');
In Berechtigungen einfügen (Name) Werte ('erstellen'); In Berechtigungen einfügen (Name) Werte ('lesen'); In Berechtigungen einfügen (Name) Werte ('Update'); In Berechtigungen einfügen (Name) Werte ('löschen');
Als nächstes müssen wir dem Benutzer Rollen zuweisen. Sie können Benutzerinformationen speichern, indem Sie eine Benutzertabelle erstellen und die Rollen -ID assoziieren. Hier ist ein Beispiel für SQL zum Erstellen von Benutzertabellen:
Tabellenbenutzer erstellen (Benutzer ID int auto_increment Primärschlüssel, Benutzername Varchar (255) Nicht null, Passwort varchar (255) nicht null, rollen_id int nicht null );
Fügen Sie dann die Benutzerdaten mit der folgenden Anweisung ein:
Einfügen in Benutzer (Benutzername, Kennwort, Rollen-) Werte ('admin', 'admin_password', 1); Einfügen in Benutzer (Benutzername, Kennwort, Rollen-) Werte ('Benutzer', 'user_password', 2);
In PHP können wir Session verwenden, um den Anmeldestatus und die Rolleninformationen des Benutzers zu speichern. Nachdem sich der Benutzer angemeldet hat, speichern wir ihre Rollen -ID in der Sitzung und verwenden dann die Berechtigungssteuerung, indem wir die Rollen -ID beurteilen.
Hier ist ein PHP -Code -Beispiel, das den Anmeldestatus eines Benutzers, seine Rolle und die Berechtigungen überprüft:
// Sitzung starten Session_Start (); // Überprüfen Sie, ob der Benutzer angemeldet ist if (! Isset ($ _ Session ['user_id']))) { echo "nicht angemeldet in"; Ausfahrt; } // die Benutzerrollen -ID erhalten $ rollen_id = $ _Session ['rollen_id']; // Benutzerrolle beurteilen if ($ rollen_id == 1) { echo "Administrator, alle Berechtigungen haben"; } elseif ($ rollen_id == 2) { echo "gewöhnlicher Benutzer mit einigen Berechtigungen"; } anders { echo "unbekannte Rolle"; Ausfahrt; } // Benutzerberechtigungen $ ARMISMIONIERT = $ _get ['Erlaubnis']; if ($ rollen_id == 1 || ($ rollen_id == 2 && in_array ($ genehmigen, ['read', 'update'])) { echo "hat {$ Erlaubnis} Erlaubnis"; } anders { echo "no {$ Erlaubnis} Erlaubnis"; Ausfahrt; }
Überprüfen Sie zuerst in diesem Code, ob der Benutzer angemeldet ist, und bestimmen Sie dann die Berechtigungen, die er auf der Rollen -ID des Benutzers basiert. Sie können die Beurteilungslogik von Rollen und Berechtigungen anhand der tatsächlichen Bedürfnisse anpassen.
Rollenbasierte Authentifizierungskontrolle (RBAC) ist eine sehr effektive Methode zur Berechtigungsverwaltung. Durch das Speichern von Rollen und Berechtigungen in der Datenbank und Kombination von PHP -Code, um die Rollen und Berechtigungen des Benutzers zu beurteilen, können wir sicherstellen, dass jeder Benutzer nur in seinen eigenen Berechtigungen zugreifen und Vorgänge ausführen kann. Dieser Ansatz erhöht die Sicherheit und Verwaltbarkeit des Systems während der Entwicklung.