Heim  >  Artikel  >  Datenbank  >  Detaillierte grafische Erläuterung des RBAC-Datenbankdesigns für die Benutzerrechteverwaltung in thinkphp

Detaillierte grafische Erläuterung des RBAC-Datenbankdesigns für die Benutzerrechteverwaltung in thinkphp

黄舟
黄舟Original
2017-05-18 10:26:104008Durchsuche

RBAC (Role-Based Access Control, rollenbasierte Zugriffskontrolle) bedeutet, dass Benutzern Berechtigungen über Rollen zugeordnet werden. Einfach ausgedrückt hat ein Benutzer mehrere Rollen und jede Rolle verfügt über mehrere Berechtigungen. Auf diese Weise wird das Berechtigungs--Modell „Benutzer-Rollen-Berechtigung“ aufgebaut. In diesem Modell besteht im Allgemeinen eine Viele-zu-Viele-Beziehung zwischen Benutzern und Rollen sowie zwischen Rollen und Berechtigungen. (Wie unten gezeigt)

Was ist die Rolle? Es kann als Sammlung einer bestimmten Anzahl von Berechtigungen und als Träger von Berechtigungen verstanden werden. Beispiel: In einem Forensystem sind „Superadministrator“ und „Moderator“ Rollen. Moderatoren können Beiträge im Forum verwalten, Benutzer im Forum verwalten usw. Dies sind Berechtigungen. Um einem Benutzer diese Berechtigungen zu erteilen, müssen Sie dem Benutzer die Berechtigungen nicht direkt erteilen. Sie können dem Benutzer die Rolle „Moderator“ zuweisen.

Wenn die Anzahl der Benutzer sehr groß ist, ist es sehr umständlich, jedem Benutzer des Systems einzeln eine Autorisierung (Rollenzuweisung) zu erteilen. Zu diesem Zeitpunkt müssen Benutzer gruppiert werden , und jede Benutzergruppe hat mehrere Benutzer. Zusätzlich zur Autorisierung von Benutzern können Sie auch Benutzergruppen autorisieren. Auf diese Weise sind alle Berechtigungen, die ein Benutzer hat, die Summe der Berechtigungen, die der Benutzer persönlich besitzt, und der Berechtigungen, die der Benutzergruppe gehören, zu der der Benutzer gehört. (Das Bild unten zeigt die Beziehung zwischen Benutzergruppen, Benutzern und Rollen)

Berechtigungsleistung im Anwendungssystem Was ? Die Bedienung von Funktionsmodulen, das Löschen und Ändern von hochgeladenen Dateien, der Zugriff auf Menüs und sogar die Sichtbarkeitssteuerung einer bestimmten Schaltfläche und eines bestimmten Bildes Auf der Seite können alle in den Zuständigkeitsbereich fallen. Einige Berechtigungsentwürfe behandeln funktionale Vorgänge als eine Kategorie und Dateien, Menüs, Seitenelemente usw. als eine andere Kategorie und bilden so ein „Benutzer-Rolle-Berechtigungs-Ressource“-Autorisierungsmodell. Bei der Datentabellenmodellierung können funktionale Vorgänge und Ressourcen auf einheitliche Weise verwaltet werden, das heißt, sie sind direkt mit der Berechtigungstabelle verknüpft, was möglicherweise bequemer und skalierbarer ist. (Siehe das Bild unten)

Bitte beachten Sie, dass es in der Berechtigungstabelle eine Spalte „Berechtigungstyp“ gibt Basierend auf seinem Wert wird die Art der Berechtigung unterschieden, z. B. „MENU“ bedeutet die Zugriffsberechtigung des Menüs, „OPERATION“ bedeutet die Betriebsberechtigung des Funktionsmoduls, „DATEI“ bedeutet die Änderungsberechtigung von In der Datei bedeutet „ELEMENT“ die Berechtigung des Seitenelements zur Sichtbarkeitskontrolle usw.

Dieses Design hat zwei Vorteile. Erstens besteht keine Notwendigkeit zu unterscheiden, welche Berechtigungsoperationen und welche Ressourcen sind (tatsächlich ist die Unterscheidung manchmal nicht einfach, z. B. im Menü, sollte es als Ressource oder Funktionsmodulberechtigung verstanden werden?). Zweitens ist es praktisch für die Erweiterung. Wenn das System Berechtigungen für neue Dinge steuern möchte, muss ich nur eine neue Zuordnungstabelle „Berechtigungs-XX-Zuordnungstabelle“ erstellen und den Berechtigungstyp dieser Berechtigungen bestimmen String .

Hier ist zu beachten, dass zwischen der Berechtigungstabelle und der Berechtigungsmenü-Zuordnungstabelle sowie zwischen der Berechtigungsmenü-Zuordnungstabelle und der Menütabelle eine Eins-zu-eins-Beziehung besteht. (Gleiches gilt für Dateien, Seitenberechtigungen, Funktionsabläufe usw.). Das heißt, jedes Mal, wenn ein Menü hinzugefügt wird, muss in jede dieser drei Tabellen gleichzeitig ein Datensatz eingefügt werden. Auf diese Weise ist die Berechtigungsmenü-Zuordnungstabelle nicht erforderlich und die Berechtigungstabelle ist direkt mit der Menütabelle verknüpft. Zu diesem Zeitpunkt muss der Berechtigungstabelle eine Spalte hinzugefügt werden, um die ID des Menüs zu speichern Tabelle übergibt den „Berechtigungstyp“. Verwenden Sie diese ID, um zu unterscheiden, unter welchem ​​Datensatz sie steht.
Zu diesem Zeitpunkt lautet das vollständige Entwurfsdiagramm des erweiterten Modells des RBAC-Berechtigungsmodells wie folgt:

Da das System immer größer wird, können zur Erleichterung der Verwaltung Rollengruppen eingeführt werden, um Rollen zu klassifizieren und zu verwalten. Im Gegensatz zu Benutzergruppen sind Rollengruppen nicht an der Autorisierung beteiligt. Beispiel: Im Modul Berechtigungsverwaltung eines bestimmten Stromnetzsystems hängen Rollen unter dem Bezirksbüro, und das Bezirksbüro kann hier als Rollengruppe verwendet werden und nimmt nicht an der Berechtigungsverteilung teil . Darüber hinaus kann eine Baumstruktur wie ein Menübaum, ein Funktionsbaum usw. verwendet werden, um die Verwaltung und Suche in jeder der oben genannten Haupttabellen zu erleichtern. Diese müssen natürlich nicht an der Berechtigungszuweisung teilnehmen.

Das Obige ist eine Erweiterung des grundlegenden RBAC-Modells und das spezifische Design muss an die Bedürfnisse des Projektgeschäfts angepasst werden.

Das obige ist der detaillierte Inhalt vonDetaillierte grafische Erläuterung des RBAC-Datenbankdesigns für die Benutzerrechteverwaltung in thinkphp. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn