Was sollten Ressourcen in einer ACL sein? Modelle von Objekten oder die Instanzen der Objekte?

StackOverflow https://stackoverflow.com/questions/890068

  •  23-08-2019
  •  | 
  •  

Frage

Bitte helfen Sie mir Zugriffskontrolllisten für meine PHP-Web-Anwendung zu implementieren. Ich verwende Zend_Acl speziell.

Ich mag feinkörnig, Anwendung breite Kontrolle über welche spezifische Entität (sei es ein Benutzer oder eine Gruppe) hat Zugriff auf welche Ressourcen. Ich möchte in der Lage sein, den Zugriff auf eine bestimmte Ressource Instanz zu gewähren, sondern auch auf alle Ressourcen dieses Typs. Zum Beispiel:

  • User # 1 hat Bearbeitungsrechte für alle Beiträge
  • User # 2 ist ein Gast-Editor und hat Bearbeitungsrechte auf Post-ID # 5
  • Gruppe # 1 (Gast) hat Privilegien auf alles lesen
  • Die Benutzer gehören zu einer Benutzergruppe, die von Gast erbt.

Meine Frage ist: Sollte eine ACL Referenz Arten von Ressourcen oder bestimmter Instanzen dort? Soll ich den Benutzern gewähren, die grundlegenden, Ressourcentyp weiten priviledges die ACL wie folgt aus:

  • Zuschuss bearbeiten Benutzer # 1 auf Post
  • Zuschuss Benutzer # 2 nichts anderes, als es ist Erbe
  • Zuschussgruppe # 1 lesen auf alle Ressourcen
  • implementieren eine Ausnahmetabelle Zuschüsse und denys auf bestimmte Ressourcen verfolgen

Oder sollte ich schaffen Ressourcen für alle einzelnen Instanzen meiner verschiedenen Arten von Ressourcen und gehen auf eine Gewährung randalieren, damit alle Benutzer auf alle Ressourcen lesen? Scheint eher Brute-like.

Meine aktuelle Lösung ist diese: Ressource Vererbung, einen Elternteil der meisten Ressource keine Art erstellen, ein Kind dieser für jede Wurzel, und dann für jede Instanz eines Kind von jedem Typ. Dies ermöglicht es mir, auf eine bestimmte Art zu gewähren, und auf einigen wenigen Fällen verweigern, oder eine bestimmte Art verweigern aber gewähren auf eine Instanz (wie für Benutzer # 2 oben). Dieses vereint mein Berechtigungssystem schön, aber meine Bedürfnisse sind komplexer. Bald verschachtelt werden Ressourcentypen. Also werde ich verschiedene Module, die können die Eltern oder Kinder sein. Ein Beispiel: eine Seite breite Fotogalerie Modul, ein Modul Ansagen mit einer anderen exklusivere Galerie darunter wohnen. Ich bin mir nicht ganz sicher, was diese Adresse zu tun. Ich möchte immer noch die Möglichkeit haben, auf alle Galerien zu gewähren, oder einfach nur ein, oder einfach nur so unter ein paar Fotos. Beachten Sie, dass Zend_Acl keine Mehrfachvererbung für Ressourcen unterstützt.

Was ist der beste Weg, dies zu implementieren? Alle mit einer ACL oder eine gewisse Logik in jedes Modul eingebaut mit?

War es hilfreich?

Lösung

Ich antwortete nur auf SO995925:?. Wie soll ich meinen Baum von Ressourcen in einer ACL strukturiere und der Rat, den ich Ihnen habe, ist ganz die gleiche

Es ist alles in deinem Kopf - Die „Announcement Galerien“ ein Kind Ressource der „Fotogalerie“ sind. Generisches Gallery # 1 Eltern „Fotogalerien“, während „Announcement Gallery“ Eltern „Announcement Galerien“. Sie können jederzeit eine andere übergeordnete Ressource Schritt in die Kette hinzufügen, wenn Sie den Baum wieder aufteilen müssen.

Noch eine einfache Baumvererbungskette.

Andere Tipps

Ihre Lösung Plan ist die Art und Weise der meisten Systeme arbeiten, dachte ich. Das Windows-Dateisystem funktioniert auf diese Weise. Das allererste ACL System, das ich je benutzt, in DCE, arbeitete auf diese Weise.

Die Vererbung ist, was Sie, um herauszufinden, haben. dynamisch Haben Sie erben, oder die Ressource zu dem Zeitpunkt erstellt wird?

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