Eine Anwendung, die Objekte (z. B. Filme) nach bestimmten Benutzerberechtigungen zeigt. Die allgemeine Berechtigung zum Anzeigen oder Erstellen von Objekten ist als RBAC mit Rollen und Berechtigungen implementiert. Die spezifische Berechtigung zum Zugriff auf ein Objekt mit bestimmten Attributen (z. B. ein Film mit dem Attribut "Drama") sollte mit Mitgliedschaften implementiert werden Das heißt, das Objekt hat nicht die Eigenschaft "Drama", es ist ein Mitglied der Gruppe "Drama". Wenn der Benutzer und das Objekt Mitglieder derselben Gruppe sind, verfügt der Benutzer über die entsprechende Berechtigung zum Zugriff auf dieses Objekt. Es kann verschiedene Gruppen zum Anzeigen, Erstellen oder Löschen eines Objekts geben, z. B. eine einfache Viewer-Gruppe oder eine Art Editor-Gruppe. Außerdem gibt es eine Tabelle, die angibt, welche Gruppentypen für bestimmte Aktionen an bestimmten Objekten relevant sind. Relevante Gruppen für die Aktion "Show" auf dem Objekt "Film" könnten beispielsweise "Genre" und "Alter" sein (Eignung des Films für bestimmte Zielgruppen).Zugriffskontrolle: RBAC mit zusätzlichen Gruppenmitgliedschaften anstelle von Objekteigenschaften
Der Grund, es in der beschriebenen Weise zu implementieren, ist eine große Flexibilität, ohne den Code zu berühren. Änderungen an Gruppen können in der Datenbank verarbeitet werden.
Allgemeine Datenbank-Design:
Beispiel: Der Film "The Revenant" ist ein Mitglied der Gruppen "Genre: Drama" und "Alter: 18". Der Benutzer kann darauf zugreifen, wenn er auch Mitglied dieser Gruppen ist.
Klingt das wie ein guter Ansatz? Gibt es Lösungen, die diesem Ansatz ähnlich sind? Hat es große Nachteile (z. B. zu viele Datenbankabfragen - es können täglich mehrere hundert Benutzer vorhanden sein)?
Bitte teilen Sie Ihre Gedanken zu diesem Thema mit mir - die Wahl von "Drama" als Kategorie für das Beispiel ist kein Zufall;) Ich weiß nur nicht, ob dies eine Sackgasse oder wenn ich in die richtige Richtung bin . Ich blieb an diesem Punkt für eine ganze Weile stecken.
BTW nur diese Antwort realisiert kann auch nützlich sein: http://stackoverflow.com/questions/30701482/mysql-access-control –
thx für die schnelle Antwort :) Ich brauche etwas Zeit, um einen tieferen Einblick in Ihre Vorschläge zu haben. – NedRise