Frage

Kennt jemand ein paar guten Ergebnisse zu hierarchischen Benutzerkontensysteme einrichten? Ich gründe derzeit eine nach oben und mit einigen der komplexeren Logik habe Schwierigkeiten (vor allem bei der Bestimmung von Berechtigungen). Ich habe gehofft, ich könnte in der Lage sein, einige Ressourcen zu finden, mir zu helfen entlang.

Einige Hintergrund: Ich baue ein Benutzerkonto System für ein Web-CMS, das für eine verschachtelte Gruppenhierarchie ermöglicht. Jede Gruppe kann erlaubt sein / verweigert den Zugang zu lesen, schreiben, hinzufügen und löschen (entweder explizit für diese Gruppe oder implizit von einem seiner Eltern). Als ob das nicht genug war kompliziert, erlaubt das System auch für die Benutzer Mitglieder mehrerer Gruppen zu sein. - Dies ist, wo ich bin stecken. Ich habe alles eingerichtet, aber ich bin mit der eigentlichen Logik kämpfen für pemissions für einen bestimmten Benutzer zu bestimmen.

War es hilfreich?

Lösung

Das Handbuch für CakePHP hat eine ausgezeichnete Beschreibung, wie Access Control Lists Arbeit.

http: //book.cakephp .org / 2.0 / de / Kern-Bibliotheken / components / Access-Control-lists.html

Andere Tipps

Stellen Sie die Berechtigungen festlegen für eine bestimmte Gruppe als Bitmaske. OR-ing der Bitmasken zusammen geben Ihnen den resultierenden Berechtigungssatz.

Update für @ Alex:

Ich schrieb diese Antwort vor 3 Jahren, aber ich glaube, ich spielte damit auf die folgende ...

Von der Frage

  

eine verschachtelte Gruppenhierarchie. Jede Gruppe kann der Zugriff erlaubt / verweigert werden   Lesen, Schreiben, hinzufügen und löschen (entweder explizit für diese Gruppe oder   implizit von einem seiner Eltern). Als ob das nicht kompliziert   genug, erlaubt das System auch für die Benutzer Mitglieder mehrerer zu sein   Gruppen. - Dies ist, wo ich bin stecken. Ich habe alles eingestellt habe, aber   Ich bin mit der eigentlichen Logik kämpfen für pemissions für eine Bestimmung   bestimmte Benutzer.

Zuweisen eine Bitmaske das Gesamt Erlaubnis-Set aus einer Gruppe passenden (oder Rolle) im System:

z. 00 (unter Verwendung von zwei Bits hält es einfach hier!)

Das erste Bit verleiht Permission A und die zweite Permission B.

Nun sagen Gruppe A verleiht den folgenden Berechtigungssatz. 01

... und sagt, Gruppe B verleiht den folgenden Berechtigungssatz. 10

die resultierende Erlaubnis für einen Benutzer in einer beliebigen Menge von Gruppen gesetzt Um Sie eine logische OR auf dem Berechtigungssatz Bit-Masken durchführen konnten:

Permission set for Group A   01
Permission set for Group B   10 OR 
                             ----
Resultant permission set     11 (i.e. both permission A and B are conferred)

Ich weiß nicht, die Details des Systems des Fragestellers, aber das System hier skizzierten erweitert werden könnten verschiedene Gruppen Zusammensetzung Verhalten mit unterschiedlichen logischen Operatoren zu erreichen.

Schauen Sie sich die Berechtigungen in der Andrew File System . Es erlaubt Benutzern, Gruppen ihrer zu erstellen und zu verwalten, während selektiv Admin-Rechte und ACLs zuweisen. Sie können feststellen, dass viele der lästigen Details sind bereits für Sie in ihrem Modell ausgearbeitet.

Edit: ist hier eine bessere Verbindung zu AFS Dokumentation:

http://www.cs.cmu.edu/~help /afs/index.html

Hier ist der Abschnitt über die Gruppen:

http://www.cs.cmu.edu/~help /afs/afs_groups.html

Ich habe genau dies vor und seine keine triviale Implementierung getan. Du wirst in der Security Klasse aussehen wollen.

[ http: // msdn.microsoft.com/en-us/library/system.security.permissions.securitypermission.aspx][1]

Ich habe dies vorher getan, indem XML verwendet (was ich nicht sicher bin ich wieder tun würde) und innerhalb von SQL Server in einer XML-Spalte durch eine CLR gespeicherte Prozedur, dass XML als Berechtigungsliste zu speichern. Die XML würde ein Element namens eine „Erlaubnis“ und dann würde die Erlaubnis tatsächlich eine ENUM innerhalb des Codes sein. Jede Genehmigung war eine neue Implementierung der Security Klasse (oben verlinkten) Nutzer wurden Gruppen gebunden, die in SQL Server definiert wurden und dann, wenn der Benutzer hinzugefügt wurde / entfernten Gruppen würde das XML-Dokument aktualisiert, zu reflektieren, welche Gruppen sie auseinander von.

Sobald der Benutzer angemeldet, würden die Benutzer-Anmeldeinformationen in die Application Store geladen werden (Session) und dann entsprechend zugegriffen werden würden. Wenn Genehmigung erforderlich Ort der XML-Code in der Anwendung zu speichern nehmen würde Methode nach unten gezogen geladen in die Security über die „fromXml“. An diesem Punkt würde ich die folgenden Methoden verwenden, um festzustellen, ob der Benutzer die Berechtigung hatte:

  • Die Nachfrage
  • Intersect
  • Union
  • IsUnrestricted
  • IsSubsetOf

usw., Etc, etc.

An diesem Punkt, nachdem die Nachfrage Durchführung ich in der Lage war, um zu bestimmen, ob der Anrufer Zugriff hatte nach, wie ich meine Sicherheitsroutinen in der SecurityPermissions umgesetzt.

Auch dies verlässt eine Tonne Detail, aber diese sollten Sie den richtigen Weg loslegen.

Werfen Sie einen Blick auf diesen Namensraum auch: [2]: http://msdn.microsoft.com/en-us/library/system.security.permissions.aspx "System.Security.Permissions"

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top