AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Baumstruktur mit Rechten

Ein Thema von Mr_G · begonnen am 23. Dez 2008 · letzter Beitrag vom 4. Jan 2009
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von Mr_G
Mr_G

Registriert seit: 2. Sep 2004
Ort: Duisburg
468 Beiträge
 
Delphi 2006 Professional
 
#1

Baumstruktur mit Rechten

  Alt 23. Dez 2008, 10:42
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...
Jan
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Baumstruktur mit Rechten

  Alt 23. Dez 2008, 10:49
Ich würde die Rechte in eine eigene Relation auslagern.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Mr_G
Mr_G

Registriert seit: 2. Sep 2004
Ort: Duisburg
468 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Baumstruktur mit Rechten

  Alt 23. Dez 2008, 10:58
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 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?)...
Jan
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Baumstruktur mit Rechten

  Alt 23. Dez 2008, 11:02
So hatte ich es auch gemeint. Wie meinst du die Vererbung auf Nutzer- oder Astebene?
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Mr_G
Mr_G

Registriert seit: 2. Sep 2004
Ort: Duisburg
468 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Baumstruktur mit Rechten

  Alt 23. Dez 2008, 11:05
Ich dachte an die Äste... also Knoten A hat für Benutzer X ein Recht, welches auf die Unterbäume weitervererbt wird.
Jan
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Baumstruktur mit Rechten

  Alt 23. Dez 2008, 11:07
Je nach implementierung der Baumanzeige ( Rekursion) ergibt sich das ja automatisch.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Mr_G
Mr_G

Registriert seit: 2. Sep 2004
Ort: Duisburg
468 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Baumstruktur mit Rechten

  Alt 23. Dez 2008, 11:15
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...?
Jan
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.005 Beiträge
 
Delphi 2009 Professional
 
#8

Re: Baumstruktur mit Rechten

  Alt 23. Dez 2008, 14:36
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.
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
Benutzerbild von Mr_G
Mr_G

Registriert seit: 2. Sep 2004
Ort: Duisburg
468 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Baumstruktur mit Rechten

  Alt 23. Dez 2008, 15:24
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.
Jan
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: Baumstruktur mit Rechten

  Alt 23. Dez 2008, 15:32
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
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:04 Uhr.
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