Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Benutzerrechte? (https://www.delphipraxis.net/183245-benutzerrechte.html)

OrNEC 23. Dez 2014 10:33

Delphi-Version: 7

Benutzerrechte?
 
Wie werden eigentlich mit Delphi Benutzerrechte bestimmt? Meine Anwendung soll Benutzerverwaltung bekommen mit verschiedenen Benutzerrechten. Gibt's vielleicht irgendwo ein Manuell dazu?

Thx

mkinzler 23. Dez 2014 10:39

AW: Benutzerrechte?
 
Eigentlich genauso wie mit jeder anderen Programmiersprache auch ;)
Am Einfachsten durch entsprechendes Ausblenden von Funktionen/Menüpunkte beim Start der Anwendung.

Perlsau 23. Dez 2014 12:42

AW: Benutzerrechte?
 
Zitat:

Zitat von OrNEC (Beitrag 1284492)
Wie werden eigentlich mit Delphi Benutzerrechte bestimmt? Meine Anwendung soll Benutzerverwaltung bekommen mit verschiedenen Benutzerrechten. Gibt's vielleicht irgendwo ein Manuell dazu?

Viele Wege führen nach Rom. Letztlich mußt du dir selbst dein System ausdenken und an deine Anforderungen anpassen. Eines meiner Systeme sieht so aus:

Beim Start der Anwendung wird ein Anmeldeformular geladen, in das man Benutzername und Passwort eingibt, die als Hashwert in der zugehörigen Datenbank gespeichert sind. In der Benutzertabelle der Datenbank steht ein Verweis auf die Rechte-Tabelle:
0 = Administrator, der darf alles.
1 = Chef, der darf fast alles.
2 = Vorgesetzter, der darf ein bissel weniger als der Chef.
3 = Mitarbeiter, der darf nur das Nötigste.
4 = Besucher, der hat nur Leserechte und darf nix schreiben.

Fängt nun ein neuer Mitarbeiter an, geht man zum vorgesetzten Abteilungsleiter, der darf neue Benutzer anlegen. Mitarbeiter dürfen das nicht. Zum Anlegen eines neuen Benutzers verwende ich dasselbe Formular wie bei der Anmeldung, nur daß zwei weitere Komponenten beim Anlegen bzw. Ändern sichtbar werden: das zweite Passwort-Edit (Passwort wiederholen) und die Combo mit den verfügbaren Rechten.

Muß ein Benutzer geändert oder gelöscht werden, geht man zum Chef, denn nur der und der Admin dürfen das. Der Admin darf zusätzlich noch ein paar mehr Sachen, die die fachliche Kompetenz des Chefs übersteigen würden.

Wie du das nun genau umsetzt, bleibt natürlich dir überlassen.

OrNEC 23. Dez 2014 13:39

AW: Benutzerrechte?
 
Zitat:

Zitat von Perlsau (Beitrag 1284529)
Wie du das nun genau umsetzt, bleibt natürlich dir überlassen.

Und wie hast Du das umgesetzt? Damit ich wenigsten eine Idee habe wie es gehen könnte.

Perlsau 23. Dez 2014 16:03

AW: Benutzerrechte?
 
Was genau verstehst du denn an obiger Skizze nicht? Oder anders gefragt: Was erwartest du jetzt? Quellcode?

vagtler 23. Dez 2014 17:08

AW: Benutzerrechte?
 
Such mal nach Bei Google suchenRBAC (Role Based Access Control). Im Gegensatz zu anderen gängigen Programmiersprachen/Frameworks (siehe z.B. Bei Google suchenC sharp RBAC oder Bei Google suchenRBAC node.js) sind mir für Delphi keine Beispiel-Implementierungen bekannt.

Der schöne Günther 23. Dez 2014 17:15

AW: Benutzerrechte?
 
Ich habe es bei mir ähnlich wie Perlsau: Es gibt Benutzer und die gehören einer Gruppe an. Eine Gruppe hat einen numerischen Wert (zwischen 0 und 100) der ausdrückt, wieviel sie dürfen. Manche Dinge gehen ab einem Rechtewert von 30, andere ab 70.

Für komplexere Dinge hat mir schlicht die Zeit gefehlt. Der Ansatz hat auf jeden Fall den Schwachpunkt den ein schlauer Mann hier bestens auf den Punkt gebracht hat:
Zitat:

Zitat von jobo (Beitrag 1223553)
Ich würde sagen, erstmal ok, aber ich stelle mir vor, dass in der Praxis kein User in einer unternehmesweiten "Fachlichkeit" überall einen bestimmten/gleichen Level hat/ erreicht.
Du bekommst also irgendwann Probleme, weil der Müller (der König aus dem Lager), die Feinheiten in der Produktion justiert...

Das entsprechende Thema aus dem das Zitat stammt ist vielleicht auch noch eine Lektüre wert.

p80286 23. Dez 2014 17:45

AW: Benutzerrechte?
 
Man könnte z.B. ein Byte mit den Benutzerrechten mitschleppen und mit entsprechender Maskierung das Rechtelevel feststellen.

Gruß
K-H

Aviator 23. Dez 2014 18:00

AW: Benutzerrechte?
 
Ich speichere mir die Benutzerrechte eines Benutzers als Integer-Wert in der Datenbank. Der Wert wird dann beim Anmelden wieder in seine binären Bestandteile zerlegt. Die Zerlegung erfolgt mit Bitverschiebung. Wenn das niederwertigste Bit eine 1 ist, dann wird das entsprechende Recht hinzugefügt, ist es 0 dann eben nicht. Die möglichen Rechte sind in einem bzw. mehreren Type(s) hinterlegt. Die Rechte, die der Benutzer nach der Anmeldung bekommt, sind in einem Set of Permissions abgelegt.

Bei Bedarf kann ich auch gerne mal ein wenig Quellcode posten, der diese Vorgehensweise deutlich macht. Ob es der beste Weg ist weiß ich nicht, aber er hat sich bei mir auf jeden Fall bewährt. So hab ich z.B. auch die Möglichkeit, jedem Benutzer individuell alle möglichen Kombinationen von Rechten zu geben.

jobo 23. Dez 2014 20:51

AW: Benutzerrechte?
 
Delphi liefert da glaub ich wenig systematische Ansätze. Am ehesten sind vielleicht die schon erwähnten Actionlists oder auch die Form (als Maske) zu nennen.
Letztlich dreht sich alles um die Funktionen, die Deine Anwendung bereitstellt.
Die Funktionen kannst Du beliebig mit Berechtigungsverfahren kreuzen.
Funktion gegen Benutzergruppe oder -Level
Funktion gegen Skill
usw. usf.
Dabei kann man ein Verfahren wählen wie hier bereits genannt, man kann sich an SQL orientieren (Select, Execute, Insert, Update, Delete) bis hin zu dem Recht, Rechte zu vergeben.
Man kann diese Rechte auf Objekt oder bis hin zu Attributen oder Volumen ausdehnen, anhand einer Mandantendimension aufteilen und man kann auch Sichheits- oder Datenschutzaspekte berücksichtigen (was schon sehr professionell ist)
Man kann in Berechtigungsverwaltung auch Object Lifecycles einbinden, womit das Recht zur Ausführung nicht mehr nur am Benutzerrecht hängt, sondern auch am Zustand des Objekts.

Am Ende muss man noch berücksichtigen, dass all das auch zu verwalten ist (neben dem Coding) und man muss einen Mittelweg zwischen Aufwand und Nutzen finden.

Wir haben mal ein solches System entwickelt und der Kunde hat irgendwann gefragt, ob man nicht die Mandantenebene weglassen kann und eine Rechtedefinition je Benutzer für alle Mandanten gilt. Es war ihm zuviel Aufwand.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:19 Uhr.
Seite 1 von 2  1 2      

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