Laden...

eigenes Rechtemodell aber wie?

Erstellt von DonCarlos vor 14 Jahren Letzter Beitrag vor 14 Jahren 1.668 Views
D
DonCarlos Themenstarter:in
19 Beiträge seit 2008
vor 14 Jahren
eigenes Rechtemodell aber wie?

Hallo!

ich bin gerade dabei mir Gedanken über ein Rechtemanagement zu machen.
Dabei will ich auc Datenbankobjektebene mir Rechte ausdenken und die nicht erst in der GUI umsetzten.

Allerdings stoße ich hier schnell auf Probleme.
Hauptproblem ist, dass jedes Objekt in irgendeiner Form mit einem Kunden bzw der Kundenummer zusammenhängt. Aber eben nicht direkt ( also es steht nicht in jeder Tabelle eine Kundennummer).

Deswegen hätte ich jetzt Objekte definiert, die zu einem bestimmten Datenobjekttyp und einer Property ein lese oder schreibrecht vergeben.

Also in etwa so:
Für das Objekt "Notiz" gibt es das Schreibrecht wenn der ObjektPfad "Bestellung.Kunde.Kundennummer" zwischen 0 und 100 ist.

Allerdings ist das auf diese Weise ziemlich umständlich, vor allem kann ich bei Suchabfragen nicht mehr darauf joinen.....

Also irgendwie bin ich etwas ratlos.
Mit meiner Lösung wäre man völlig frei in der konfiguartion, aber umsetzbar ists nicht mehr ....

Wie habt ihr das gemacht ?

L
23 Beiträge seit 2008
vor 14 Jahren

Hallo DonCarlos,

evtl. könntest du in deiner Datenbank eine Tabelle für die Rechte machen auf die du dann zugreifst. Dort könntest du dann auch Gruppen definieren. Allerdings müsstest du das dann auch Auswerten und entsprechend darauf reagieren.

MfG LaMa Jan

S
401 Beiträge seit 2008
vor 14 Jahren

die nicht erst in der GUI umsetzten.

Das sollte man sowieso nicht machen.

Ich kenne deinen Anwendungsfall nicht, aber für ein Rechtesystem musst du eine zusätzliche Schicht einziehen. Das Kommando-Pattern ist ein Ansatz zur Umsetzung. Damit kannst du auch ein History-Managment umsetzen, falls erwünscht.

L
168 Beiträge seit 2008
vor 14 Jahren

Also ich würde zunächst mal für jeden Benutzer deiner Anwendung einen Benutzer in der Datenbank anlegen, über den die Berechtigugnen und Zugriffe auf Tabellenebene geregelt werden.

Dann würde ich eine Tabelle anlegen für die Rollen deiner Anwendung bspw. Sachbearbeiter Angebote, Sachbearbeiter Stammdaten, Admin usw.

Diese Rollen würde ich deinen Anwendern zuordnen. Ggf. kann man eine zusätzliche Tabelle anlegen in der deine Anwender mit einzelnen "Datensätzen" verknüpft werden bspw. Nutzer A darf Kundennummer 1 bis 100 sehen.

In deiner Anwendung kannst du dann in der Logikschicht prüfen ob Benutzer X Rolle Y hat die zur Abfrage der Daten benötigt wird und ob er den entpsrechenden Kunden zugeordnet ist.

D
DonCarlos Themenstarter:in
19 Beiträge seit 2008
vor 14 Jahren

Hallo zusammen,

ich bin schon soweit das alles in der Datenbank zu speichern
aber ich weiß nicht so recht wie ich das am sinnvollsten abspeichere.

Momentan hab ich die rechte so abgelegt, dass ich sie im Programm am schönsten speichern kann.
Leider kann ich jetzt in der Datenbank deswegen nicht mehr drauf joinen... das ist etwas lästig...

ausserdem speichert Hibernate ja mehrere Objekte auf einmal weg, wo ich gar nicht mehr die hand dazwischen halten kann sozusagen , also wenn ich eine Rechnung speichere speichert er die Positionen auch gleich mit. Das ist ja das schöne. Aber theoretisch könnte ich ja rechte wollen die das speichern von Positionen verbieten, die Rechnung aber erlauben.

Ich weiß nicht so recht wie ich mich am verständlichsten ausdrücken kann 🤔