| | | | |
| |||||||
| Software-Design Diskussionen auf Profi-Niveau: PHP Lösungen auf konzeptioneller Ebene |
|
| | LinkBack (5) | Themen-Optionen | Thema bewerten |
| | |
| Neuer Benutzer Registriert seit: 05.02.2009
Beiträge: 21
![]() | Hey, ja hab ich mir angeschaut und es geht in meine Richtung. Aber ich habe zwei Klassen komplett weggelassen. Hier ist eine UML, leider nicht so ausführlich aber zur Veranschaulichung reicht es hoffentlich. UML Wofür brauchst du noch eine Permissions-Set? Ich geb der Rolle einfach unendlich viele Permissions ohne ein Set. Wenn ich das richtig verstanden hab kannst du deiner Gruppen auch eine Permission oder ein PSet zuweisen. Aber im Endeffekt ist eine Gruppe dann doch sehr ähnlich einer Rolle, oder? Ich denke, dass ich die Idee hinter einer Gruppe noch nicht verstanden hab. Für mich vergibt sich dadurch irgendwie keine Erleichterung bzw. Verbesserung des Access Controlling. |
| | |
| | |
| PHP Code Flüsterer Registriert seit: 21.08.2005 Beiträge: 4682 PHP-Kenntnisse: Fortgeschritten | |
| | ||||
| Moderator und Wett-König | Hallo Bumpy, ich bin mir bei der Bedeutung der Beziehungen in deinem Diagramm noch nicht ganz schlüssig. Was bedeutet die gestrichelte Linie zwischen Applikation und Benutzer? Ist das eine Assoziation? Falls ja, ist das problematisch, denn wenn der Benutzer seine Applikationen kennen muss, ist dieser Design-technisch nicht unabhängig genug. Weiterhin fehlen mir Gruppen und weitere Ordnungscontainer, die eine Zugehörigkeit der Strukturelemente zeigen. Ein Benutzer sollte immer unter einer Organisationseinheit hängen - wie im richtigen Leben eben. Wie ist die Beziehung zwischen dem Controller und der Rolle/dem Benutzer ausgeprägt? Sollte ein (MVC)-Controller nicht eine Business-Schicht konsumieren um die relevanten Tasks der Präsentationsschicht zu erledigen? Mir vermischt das Diagramm ein wenig das reine Domänen-Modell mit dem Klassendiagramm einer Anwendung. Zitat:
Zitat:
Nur so kannst du echte Rollen (=~ Sichten auf eine Anwendung) bereitstellen. Zitat:
Ich hoffe, ich konnte soweit zum Verständnis des Konzeptes beitragen. Wichtig ist hier vor allem, dass du das Objekt- bzw. Domänen-Modell unabhängig der Anwendung skizzierst. So bist du von Beginn an gezwungen über ein allgemeingültiges Szenario nachzudenken.
__________________ 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! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |||
| | |
| | |||
| Neuer Benutzer Registriert seit: 05.02.2009
Beiträge: 21
![]() | Hey, danke für deine ausführliche Antwort. Mein Uml, also das Klassendiagram war ein bisschen stürmisch heute nacht gemacht. Ich hab heute nochmal ein paar Klassendiagramm, UseCases und Systemklassenmodell entworfen (Da ich UML gerade sowieso lernen (vertiefen) muss, dachte ich mir dass ich noch ein bisschen weiter entwerfen kann). Ich setze das Systemklassenmodell ans Ende des Beitrags, erstmal wollte ich auf ein paar deiner Antworten eingehen. Zitat:
Zitat:
Ein User ist in Gruppe "User" hat aber als Rolle "Moderator" und darf nicht nur Artikel anschauen sondern auch verändern bzw. neue hinzufügen. Richtig? Ich regele das direkt über die Permissions. Entweder man hat die Permissions zum Bearbeiten oder nicht und so weiter. Hier ist jetzt mein Systemklassenmodell: Systemklassenmodell Bitte nicht so viel Beachtung auf die Assoziationen, die Name sind teils nicht so optimal gewählt. gruß b.j. | ||
| | |
| | |||||
| Moderator und Wett-König | Hallo, Zitat:
Zitat:
Zitat:
Weiterhin solltest du das Domänen-Modell vom Klassenmodell der Anwendung trennen. Das System-Diagramm ist IHMO immernoch verwirrend. 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! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||||
| | |
| | |
| Neuer Benutzer Registriert seit: 05.02.2009
Beiträge: 21
![]() | So, hab jetzt noch mal ein UML-Diagram überarbeitet. Hab jetzt noch ein zusätlichen Controller eingesetzt, der als WebController fungiert um halt anfragen eines Users abzuarbeiten. Ich glaube den Punkt hatteich noch nicht bedacht. Dazu hab ich jetzt Aggregation, Komposition und Multiplizitäten hinzugefügt. Desweiteren hab ich mir erlaubt die Benennung der Assoziation nach deiner Konfektion umzuändern, so ist das Diagram wohl leichter zu verstehen. Wäre aber immernoch super wenn du mich auf Fehler aufmerksam machst. Nochmal zum Thema Gruppen. In meinem System sind kein Gruppen vorgesehen, da ich glaube, dass ich sie nicht brauche. Ich arbeite einfach nur mit Rollen. Wie du hoffentlich jetzt Nichtsdestotrotz werde ich mir den (dein) Ansatz nochmal genau durch den Kopfgehen lassen und schauen ob es nicht vielleicht doch sinnvoll ist diese Methode zu verwenden. UML |
| | |
| | |||
| Moderator und Wett-König | Hallo Bumpy, das Diagramm sieht nun "freundlicher" aus. Was du mir nur erklären musst, ist die Komposition des Permission- und Role-Handlers zum RBAC-Controller? Möchtest du eine direkte Abhängigkeit der Komponenten darstellen oder soll das eine Komposition im Sinne von Domänen-Objekten sein? Letzteres IMHO wahrscheinlich nicht. An sich macht es natürlich Sinn, eigene Business-Komponenten für das Handling von Permissions und Rollen zu definieren, nur sind das für meine Begriffe so elementare Funktionen eines Benutzer-Managements, dass man diese zusammenfassen sollte. Dieser Meinung bin ich deshalb, da die beiden von den Komponenten verwalteten Domänen-Objekte duch Ihre Beziehung zusammengehören. Grundsätzlich spricht aber auch nichts gegen eine Trennung, sofern die beiden Komponenten so zusammen spielen, dass diese als "gemeinsame" API von einer Applikation genutzt werden können. Bei der Beziehung Benutzer <-> Rolle bin ich jedoch nicht so ganz deiner Meinung. Die Quelle der Beziehung sollte IMHO von der Rolle und nicht vom Benutzer ausgehen. Grund ist, dass eine Rolle soetwas wie eine "Kategorisierung" ist. Beispiel aus dem richtigen Leben: ein Junge wird in eine Fußballmannschaft aufgenommen und nicht der Junge nimmt die Fußballmanschaft zu sich auf. Weitere Fragen, die sich mir stellen: * Was stellt die Klasse WebControl für dich da? Ist das ein Objekt einer Webseite, gar eine TagLib? * Wird der RBAC_Controller als Business-Komponente eingesetzt und dient einer Webapplikation bzw. einem WebControl als Service? Zitat:
1. Darf ich dieses Objekt sehen/nicht sehen (Sichtbarkeitsrechte) 2. Was darf ich mit diesem Objekt anstellen (Funktionsrechte) Zitat:
Danke für die spannende Diskussion! ![]()
__________________ 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! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
| | |
| | |||||||
| Neuer Benutzer Registriert seit: 05.02.2009
Beiträge: 21
![]() | Zitat:
Zitat:
Zitat:
Hier dem Punkt muss ich mich leider entschuldigen. Mein RBAC ist grundlegend schon auf dem RBAC - Konzept aufgebaut doch war ich bei der Planung und im Design sehr ungenau. Ich wollte zu schnell fertig werden. Im Moment bin ich mit meiner Implementierung gar nicht mehr zu frieden und auch ein bisschen naja "sauer" auf mich, dass ich so schlampig recherchiert habe. Ich hab mir jetzt nochmal ein paar Dokumente zum RBAC angeschaut und konnte halt so viele Fehler und Missverständnisse entdecken bzw. aufklären. Ein wichtiger Punkt ist auch die hierarchisch Rollenzuordnung. Im Klartext heißt, dass es halt "höhere" Rollen gibt die von "niedrigern" Rollen die Permissions übernehmen. Für weitere Informationen hab ich mal zwei PDF hochgeladen. In den selbst sollten noch weiterführende Links enthalten sein. Sind aber auf englisch. RBAC-PDFs Zitat:
Jetzt müsste ich eigentlich alle meine anderen Klassen einbauen, so ist das ganze System natürlich noch nicht vollständig. Der RBAC-Controller ist eigentlich die Control-Klasse, die halt den Akteur(durch die Boundary) die Funktion stellt um die Rollen bzw. Permissions zuverwalten. Leider kann ich mit der Vokabel "Business-Komponente" nix anfange auch paar Google- und Wikipediasuchen haben das Geheimnis nicht lüften können. Also, was meinst du mit Business-Komponente? Zitat:
Zitat:
![]() gute nacht, b.j. | ||||||
| | |
| | |||||||
| Moderator und Wett-König | Hallo Bumpy, Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Im Sinne dieses Pattern kapsele ich gerne gemeinsame und global verwendbare Funktionen in einer Business-Komponente, die zumeist das Wort "Manager" im Namen trägt. In diesem Fall wäre das der UsermanagementManager, der allen Teilen der Applikation ein Interface zur Benutzerverwaltung zur Verfügung stellt. Das stellt nicht nur sicher, dass innerhalb einer Applikation Funktionen zentral zur Verfügung stehen, sondern ich kann diese auch in anderen Applikationen wiederverwenden und muss nicht jedes mal neu implementieren/kopieren. Viele Grüße, Christian
__________________ 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! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||||||
| | |
| | |
| Supermoderator HD Registriert seit: 16.03.2008
Beiträge: 8.425
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | Der Unterschied liegt darin, dass beim Gruppensystem eine Vererbung stattfindet. Es können der Gruppe Rechte zugewiesen, die auf den Benutzer übergehen. Der Benutzer kann aber ebenso spezielle Rechte erhalten, die die Rechte der Gruppe überschreiben. Bei einer rollenbasierten Rechteverwaltung wird hingegen von einer realen Rolle ausgegangen, die ein Benutzer im Leben haben könnte und es werden somit nur noch der Rolle Rechte zugewiesen (also Redakteure dürfen dies, Akquisiteure jenes, Zeitungsträger noch wieder etwas anderes). Eine gute Beschreibung findest du auch hier: Rollen sind keine Gruppen | Mike Wiesner - IT-Security, Spring, Acegi Wie das APF aufgebaut ist, weiß ich nicht, aber sofern es rollenbasiert arbeitet, dürfte es nicht möglich sein, einzelnen Benutzern Rechte zuzuweisen.
__________________ Refining Linux Advent Calendar series “24 Outstanding ZSH Gems” |
| | |
|
| Themen-Optionen | |
| Thema bewerten | |
|
|
LinkBacks (?)
LinkBack to this Thread: http://www.php.de/software-design/50416-rechteverwaltung.html | ||||
| Erstellt von | For | Type | Datum | |
| implementierung eines Rechtemanagements - XHTMLforum | This thread | Pingback | 18.06.2009 16:57 | |
| Literatur :: Adventure PHP Framework (APF) | This thread | Refback | 23.04.2009 18:59 | |
| Userrechtescript - Developer's Guide | This thread | Refback | 09.03.2009 00:53 | |
| Userrechtescript - Developer's Guide | This thread | Refback | 08.03.2009 10:12 | |
| Rechtesystem frage. - Forum: phpforum.de | This thread | Refback | 15.02.2009 19:54 | |