Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Baumstruktur mit Rechten (https://www.delphipraxis.net/126386-baumstruktur-mit-rechten.html)

Mr_G 23. Dez 2008 10:42


Baumstruktur mit Rechten
 
Hallo zusammen,
ich glaube ich brauche mal ein par Anregungen. Es geht um folgendes: Ich bastel an einem PHP-Projekt mit einer Benutzerverwaltung, in dem ich eine Baumstruktur habe (in meinem Fall ein Menü), die in einer MySQL-Datenbank liegt. Nun soll aber nicht jeder Benutzer Zugriff auf die ganze Struktur haben. Dazu wollte ich einfach eine Relation einführen, die einen Knoten ggf. mit einem Benutzer in Verbindung bringt, wenn dieser bestimmte Zugriffsrechte hat (hierbei würde ich gerne auch eine mögliche Vererbung einbauen).
Nun stellt sich mir die Frage wie ich das ganze Heckmeck in die Datenbank bekomme. Für eine menüartige Baumstruktur würden sich ja Nested Sets anbieten aber die Farge ist, ob das Sinn macht, wenn ich die Struktur via "Rechteauslese" zerschnibbel. Eine andere Idee wäre einfach eine Tabelle zu nehemen und für jeden Knoten einen evtl. Vater anzugeben. Das zurechtschnibbeln könnte ich dann in PHP machen.
Ich bin für jeden Vorschlag dankbar...

mkinzler 23. Dez 2008 10:49

Re: Baumstruktur mit Rechten
 
Ich würde die Rechte in eine eigene Relation auslagern.

Mr_G 23. Dez 2008 10:58

Re: Baumstruktur mit Rechten
 
Zitat:

Zitat von Mr_G
...Dazu wollte ich einfach eine Relation einführen, die einen Knoten ggf. mit einem Benutzer in Verbindung bringt, wenn dieser bestimmte Zugriffsrechte hat...

Zitat:

Zitat von mkinzler
Ich würde die Rechte in eine eigene Relation auslagern.

Könntest du das noch etwas präzisieren, damit ich weiß ob sich das mit meiner Idee deckt?
Ich dachte eben an eine Tabelle mit KnotenID, BenuterID und Recht (+ evtl. Vererbung?)...

mkinzler 23. Dez 2008 11:02

Re: Baumstruktur mit Rechten
 
So hatte ich es auch gemeint. Wie meinst du die Vererbung auf Nutzer- oder Astebene?

Mr_G 23. Dez 2008 11:05

Re: Baumstruktur mit Rechten
 
Ich dachte an die Äste... also Knoten A hat für Benutzer X ein Recht, welches auf die Unterbäume weitervererbt wird.

mkinzler 23. Dez 2008 11:07

Re: Baumstruktur mit Rechten
 
Je nach implementierung der Baumanzeige ( Rekursion) ergibt sich das ja automatisch.

Mr_G 23. Dez 2008 11:15

Re: Baumstruktur mit Rechten
 
Das mag sein... die Frage ist wie macht man es am Besten?
Wenn man mit Nested Sets arbeitet und man die "Auslese" via SQL gestaltet wird man wohl für jeden Zweig mit Vererbung ein extra Query machen müssen. Das ist eher nicht so elegant oder? Also besser alles holen und mittels PHP verarbeiten? Dann wäre ja die Lösung ohne Nested Sets und mit VaterID angebracht...?

mjustin 23. Dez 2008 14:36

Re: Baumstruktur mit Rechten
 
Zitat:

Zitat von Mr_G
Ich dachte an die Äste... also Knoten A hat für Benutzer X ein Recht, welches auf die Unterbäume weitervererbt wird.

Ist das immer so? Falls ja, ok - was aber, wenn die Regeln komplizierter werden, zum Beispiel Rechte auf bestimmte Unterpunkte einzelnen Benutzern entzogen werden sollen ...

Rechteverwaltung ist ein sehr schönes Kapitel in der Unternehmenssoftwareentwicklung, die Delphi-Komponenten die ich bisher gesehen habe, waren alle recht einfach gestrickt (und daher mussten wir uns etwas eigenes bauen, das halbwegs funktioniert).


Falls ich es neu progrommieren würde: RBAC mit Rollenmappings fällt mir da als Ansatz ein, also Rollen die bestimmten Funktionen zugeordnet sind, und innerhalb der Benutzerverwaltung können die Benutzer einer oder mehreren Gruppen zugeordnet werden. Als Sahnehäubchen dient das Rollenmapping dazu, die Namen der Rollen im Programm mit den Rollennamen in der Benutzerverwaltung zu mappen.

Also User1 -> GruppeA -> Rolle1 -> Rechte

Konkret: 'Maier' in Gruppe 'Personalsachbearbeitung', diese Gruppe wird auf die Rolle 'Human Resources' gemappt, und dieser Rolle werden die Rechte zugeordnet.

Mr_G 23. Dez 2008 15:24

Re: Baumstruktur mit Rechten
 
Vielen Dank für die ausführliche Antwort!
Role Based Access Control hört sich ganz gut an, aber was mich noch interessieren würde ist wie das ganze in der Baumstruktur verankert wird?
Wichtig wäre mir auch noch ein Rat zum Thema Speicherung: In welcher Form lege ich den Baum am besten in der Datenbank ab und wo verarbeite ich das ganze am besten?
Momentan tendiere ich dazu einfach die ganze Struktur aus der Datenbank zu lesen und mittels PHP die Rechte darauf anzuwenden. Nur weiß ich nicht wie ich das mit der Vererbung hinbekommen soll.

mkinzler 23. Dez 2008 15:32

Re: Baumstruktur mit Rechten
 
Zitat:

Role Based Access Control hört sich ganz gut an
Das wäre die andere Variante der Vererbung
Zitat:

In welcher Form lege ich den Baum am besten in der Datenbank ab und wo verarbeite ich das ganze am besten?
Ich kenne mich mit MySQL nicht so aus (NestedSets). In FireBird würde ich das durch eine rekursive SP oder eine rekursiven CTE erledigen
Zitat:

Momentan tendiere ich dazu einfach die ganze Struktur aus der Datenbank zu lesen und mittels PHP die Rechte darauf anzuwenden
Kann man auch durch Joins in einem Aufwasch erledigen


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:18 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz