| | | | |
| |||||||
| Software-Design Diskussionen auf Profi-Niveau: PHP Lösungen auf konzeptioneller Ebene |
|
| | LinkBack | Themen-Optionen | Thema bewerten |
| | |
| PHP Code Flüsterer Registriert seit: 21.08.2005 Beiträge: 4682 PHP-Kenntnisse: Fortgeschritten | |
| | |
| Moderator und Wett-König | Hallo Geryone, hast du dir mal die Threads zu diesem Thema hier angesehen? Wir haben kürzlich unter http://www.php.de/software-design/50...erwaltung.html (Rechteverwaltung) über das Thema ausführlich diskutiert. Zu der von mir dort vorgeschlagenen Lösung hätte ich auch hier tendiert, da es weniger um Vererbung, denn um generische Abbildung von Funktions-Berechtigungen auf Rollen geht. Darüber hinaus sollte dieses Konzept mit Sichtbarkeits-Berechtigungen kombiniert, deinen Anwendungsfall abdecken.
__________________ Viele Grüße, Dr.E. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. Think about software design before you start to write code! 2. Discuss and review it together with experts! 3. Choose good tools (-> Adventure PHP Framework (APF))! 4. Write clean and reusable software only! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| | |
| | |
| Benutzer Registriert seit: 04.10.2010
Beiträge: 62
PHP-Kenntnisse: Fortgeschritten ![]() | Hallo und danke für die Antwort. Ja ich habe dieses Thema ausführlich gelesen. Und auch verstanden soweit ich glaube. Nur ist mir das alles etwas tu theoretisch. Mir ist allerdings erst jetzt wieder aufgefallen, das ich schon wieder Rollen und Gruppen vermixt habe. Aber das soll erstmal nicht so wild sein. Ich wollte einfach mal eine praxisnähere Diskusion anstreben. Zunächst stellt sich mir die Frage ob das was ich da tue wirklich Funktionsberechtigungen sind, und ob das so gängig ist. Also ich meine vor einem call() speziell zu erfragen, ob eine Funktion mit einem gewissen Parameter ausgeführt werden darf. Und des weiteren bin ich mir einfach unsicher, ob ich alle Rechte von Anfang an laden soll oder ob es besser ist, das Recht erst dann aus der Datenbank zu erfragen, wenn es benötigt wird. Denn ersteres könnte sehr viel Speicher beim Ausführen der Anwendung zur Folge haben und letzteres ist Datenbankintensiver. Zumindest in meiner aktuellen Vorstellung. |
| | |
| | |||||
| Moderator und Wett-König | Hallo Geryon, Zitat:
Was die Anwendung angeht, kommt das auf die Umsetzung deines CMS an. Hier stellt sich die Frage, ob du einen optimistischen oder pessimistischen Schutz Anwendung finden lassen möchtest. Erstere ist recht einfach, er zeigt dir bei fehlender Permission den Navi- oder Kontext-Menü-Punkt erst garnicht an. Sofern du eine pessimistische Sicherung einbauen möchtest, zeigst du den Punkt nicht an und prüfst zusätzlich in der Aktion noch auf Berechtigung. Dies kann man technisch als decorator pattern für einen Business-Service nach dem transaction script pattern umsetzen. Der Wrapper-Service beinhaltet dabei lediglich den Check auf die Berechtigung und delegiert die reine Funktion an den "eigentlichen" Service. Zitat:
Zitat:
Zitat:
Was das Thema Implementierung angeht, so lässt sich durch geschickte Daten-Modellierung ein einfacher Lade-Mechanismus erreichen. Alternativ dazu kann ein generischer Ansatz für die Sichtbarkeits-Berechtigungen genutzt werden, wie es das Usermanagement-Modul des APF tut. Hier werden Stellvertreter-Objekte angelegt, die auf Basis von Beziehungen zu einem Benutzer, einer Gruppe oder eines Berechtigungs-Typen geladen werden können. Auf Basis dieser Informationen können dann die "echten" Objekte angezogen werden. Das hat den Vorteil, dass sich so jede beliebige Anwendung in ds Modul integrieren lässt. Um dir ein paar Quellcode-Beispiele zu geben, hier das Anlegen einer Berechtigung beim Erstellen eines CMS-Artikels: PHP-Code: Möchte ich eine Liste von Artikeln laden, die ein Benutzer über sich selbst oder einer seiner Gruppen berechtigt ist zuzugreifen, so funktioniert das wie folgt: PHP-Code: Sofern du Interesse an weiteren Beispielen hast, kann ich gerne noch eines aufbereiten.
__________________ Viele Grüße, Dr.E. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. Think about software design before you start to write code! 2. Discuss and review it together with experts! 3. Choose good tools (-> Adventure PHP Framework (APF))! 4. Write clean and reusable software only! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||||
| | |
| | ||
| Benutzer Registriert seit: 04.10.2010
Beiträge: 62
PHP-Kenntnisse: Fortgeschritten ![]() | Danke für diese ausführliche Antwort. Meine erste Frage wurde damit schon konkret beantwortet. Nun ist mir aber beim lesen zu meinem zweiten anliegen (dem laden der Rechte) aber noch etwas eingefallen: Zitat:
Aber ich glaube das ist eine extra Diskussion. Ich würde gerne einmal eine Grafik hier einstellen, die mein Hauptproblem mit Rechten, Rollen und Gruppen ziemlich genau beschreibt. Aber ich werde noch ein bischen Zeit brauchen die zu erstellen. Danke aber schonmal, dass du dir die Zeit für Beispiele genommen hast. | |
| | |
| | |||||
| Moderator und Wett-König | Hallo Geryon, Zitat:
Zitat:
Zitat:
Zitat:
![]()
__________________ Viele Grüße, Dr.E. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. Think about software design before you start to write code! 2. Discuss and review it together with experts! 3. Choose good tools (-> Adventure PHP Framework (APF))! 4. Write clean and reusable software only! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||||
| | |
| | |
| Benutzer Registriert seit: 04.10.2010
Beiträge: 62
PHP-Kenntnisse: Fortgeschritten ![]() | Hallo. Danke für die Antwort. Ich werde mir die genannten Vorschläge in den nächsten Tagen mal genauer ansehen. Ich denke ich habe den Ansatz RBAC - besonders Version 2 - ganz gut verstanden. Nur etwas bleibt für mich dabei offen. Da ich eigentlich aus dem Bereich ACL komme habe ich ne Weile gebraucht um das RBAC zu begreifen. Dennoch fehlt mir dort etwas. Beim RBAC werden Rollen benutzt um Rechte zu bündeln. Und durch Vererbung kann man mit den Rollen auch indirekt Benutzer bündeln. Jede Rolle beinhaltet Rechte, die aus Objekten und Aktionen bestehen. Soweit ist mir das total klar. Jetzt kommt mein Problem: Ein Benutzer hat das Recht, dass er im Forum mit der ID 3 einen neuen Beitrag verfassen darf. Dazu hat er die Rolle "Forum User" inne. Um seinen eigenen Beitrag jedoch löschen oder bearbeiten zu dürfen müssen diese beiden neuen Rechte unmitelbr und ohne Rolle dem User zugeordnet werden. Das hat aber an dieser Stelle nichts mehr mit RBAC zu tun. Ich habe unzählige Artikel gelesen. Aber in keinem war die Rede davon, dass es auch möglich ist, Rechte direkt an Benutzer zu knüpfen. Das ist ja glaube ich auch ein Merkmal von RBAC. Es geht mir also darum, dass es Rechte geben muss, die nicht in Rollen sein dürfen, sondern dem User direkt zugeteilt sind. Also eine Art ACL neben dem RBAC. Ich hoffe ich konnte mein Problem so ganz gut verdeutlichen |
| | |
| | |||
| Moderator und Wett-König | Hallo Geryon, Zitat:
Dies ist mit dem Rollen-Konzept (hier ist wichtig zu verstehen, dass ein Benutzer mehrere Rollen haben darf und soll!) sehr einfach möglich. Zunächst sollte das Forum, in dem sich der Benutzer bewegt für ihn sichtbar sein. Hierzu benötigt er eine Sichtbarkeitsberechtigung auf das Forum. In welcher Granularität nun Sichtbarkeitsberechtigungen vergeben werden ist dabei zweitrangig. Ich gehe hier mal davon aus, dass die Berechtigung auf Foren-Basis geschieht und damit jeder Beitrag eines Forums für ihn sichtbar ist. Weiterhin gehe ich davon aus, dass der Benutzer die Sichtbarkeitsberechtigung nicht über seiner selbst, sondern über eine zugehörige Gruppe (z.B. "Angemeldete Benutzer") erhält. Anschließend wird dem Benutzer eine Standard-Rolle "Mitglied" zugewiesen, die die Funktions-Berechtigungen "create_thread", "edit_own_thread" und "delete_own_thread" mit den Werten "true" beinhaltet. Damit kannst du zur Abzeige des "Bearbeiten"- und "Löschen"-Buttons granular abfragen, ob der Nutzer das überhaupt darf. Sofern angemldete Benutzer innerhalb der für sie sichtbaren Foren ihre Beiträge nicht mehr selbst löschen können sollten, nimmst du der Rolle einfach die Permission "delete_own_threads" weg. Sofern du das auf einzelne Posts restriktieren möchtest, muss einfach eine derartige Funktions-Berechtigung definiert und gesetzt sein. Zitat:
__________________ Viele Grüße, Dr.E. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. Think about software design before you start to write code! 2. Discuss and review it together with experts! 3. Choose good tools (-> Adventure PHP Framework (APF))! 4. Write clean and reusable software only! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
| | |
|
| Themen-Optionen | |
| Thema bewerten | |
|
|
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| [Erledigt] Komisches Verhalten von $this bei Vererbung | delta | PHP Tipps 2010 | 27 | 05.05.2010 17:49 |
| Singleton mit Vererbung -> Ctor Problem | Alex04 | PHP-Fortgeschrittene | 3 | 28.03.2010 14:05 |
| Eine Nutzerverwaltung mit Rechten erstellen | timmeyy | PHP Tipps 2009 | 26 | 31.07.2009 20:55 |
| Singleton Model oder Vererbung ? | MollocH | PHP-Fortgeschrittene | 2 | 10.02.2009 20:32 |
| [Erledigt] "Klassen" und sinvolle Vererbung | phpdummi | JavaScript, Ajax und mehr | 8 | 28.01.2009 04:01 |
| CSS: div am rechten Rand positieren | Autoterrorist | HTML, Usability und Barrierefreiheit | 3 | 31.07.2008 14:09 |
| Vererbung - Include? | Igäl | PHP Tipps 2008 | 13 | 17.08.2007 10:10 |
| Klasse und Vererbung | Rio99 | PHP Tipps 2006 | 4 | 05.07.2006 16:41 |
| PHP5: DOMDocument + vererbung | Syntaxx | PHP-Fortgeschrittene | 4 | 07.06.2006 09:02 |
| Frage zur Vererbung | 250Euro | PHP-Fortgeschrittene | 3 | 15.05.2006 08:53 |
| Vererbung bei Templates | Pain-maker | PHP-Fortgeschrittene | 9 | 28.03.2006 10:05 |
| Vererbung von Klassen und Performance | ggfan | PHP Tipps 2006 | 5 | 05.03.2006 12:00 |
| probleme mit rechten an einem ordner: nicht veränderbar?!?!? | Promaetheus | PHP Tipps 2004 | 8 | 30.10.2004 18:42 |
| Datenmodell Antragsbearbeitung Rollen? | PHP Tipps 2004 | 3 | 14.07.2004 22:41 | |
| Datenmodell Antragsbearbeitung Rollen? | Datenbanken | 0 | 14.07.2004 00:57 | |
| Besucher kamen über folgende Suchanfragen bei Google auf diese Seite |
| php rbac cms, vererbung von rechten, php rbac tutorial, php rollenkonzept, rollenkonzept beispiel, gruppen sichtbarkeits berechtigungen php, java funktionsberechtigungen, rollen rechte vererbung, umsetzung berechtigung rollen datenbank, php beispiel datenbankanbindung rollenkonzept, rollen php, funktionsberechtigungen konzept, php berechtigungskonzept, was passiert beim durch vererbung von rechten, php rollen, sichtbarkeits-berechtigungen, berechtigungskonzept rolle gruppe generisch, php user role permission, rollen vererbung tabellen, apf user seiten berechtigung |