Forums Neueste Beiträge
 

Berechtigungen im Programm

02/09/2008 - 11:22 von Uwe Gabbert | Report spam
Hallo,

ich möchte in meinem Programm Berechtigungen festlegen, damit bestimmte
Benutzer nur festgelegte Funktionen nutzen können.

Randbedingungen:
Alle Mitarbeiter sind Mitglied einer Domàne. Das bedeutet, dass ich den
Windows-Benutzernamen verwenden kann. Diese werden in verschiedenen
Gruppen verwaltet.

Jetzt möchte ich den einzelnen Gruppen Rechte auf Menüpunkte und
Buttons vergeben.

Wie realisiert man das am flexibelsten?
z.B.
- Zuordnung Benutzer in eine / mehrere Gruppen
- Menüpunkt "Optionen" nur für Gruppe "Admin" und "Verwaltung"
- btnhAendern nur Gruppe "Verwaltung"

Definiert man alle Zuordnungen jeweils bei dem entsprechenden Formular
oder Zentral beim Programmstart?
Codierung der Rechte im Programm oder in einer zentralen SQL-Datenbank,
welche abgefragt wird.

Ich habe so etwas mit SQL und PHP bereits realisiert, möchte es aber
nicht nach VB.NET übertragen, da es in der OOP ja sicher elegantere
Wege gibt.

Für ein paar Ideen wàre ich dankbar.

Uwe Gabbert
VS 2008 - VB - .NET 3.5
 

Lesen sie die antworten

#1 Martin Steiger
03/09/2008 - 10:01 | Warnen spam
Uwe Gabbert schrieb:

Wie realisiert man das am flexibelsten?
z.B.
- Zuordnung Benutzer in eine / mehrere Gruppen
- Menüpunkt "Optionen" nur für Gruppe "Admin" und "Verwaltung"
- btnhAendern nur Gruppe "Verwaltung"




Für das Menü würde mir jetzt als erstes eine XML-Datei in den Sinn
kommen, wo das Menü definiert wird (z.B.
http://www.codeproject.com/KB/menus/XMLMenu.aspx). Könnte natürlich auch
in einer Datenbank sein.

In der Menüdefinition dann ein "Bit-Flag", welches definiert, für wen
der Zugriff gestattet ist.

Den jeweiligen Gruppen wird ein "Bit" zugewiesen, also z.B.
Benutzer = 1
Editor = 2
Verwaltung = 4
Admin = 8

Wenn z.B. ein Menü für die Gruppen Admin und Verwaltung sichtbar sein
soll, dann kriegt der Menüeintrag das Bitflag 12 (4 + 8).

Mit AND (bitweiser Operator) könntest Du bei der Menüanzeige dann
überprüfen, ob der Menüeintrag für diese Gruppe sichtbar ist.

Pseudo-Code
' Benutzer hat Rolle 8 (Admin)
' Menü-Item hat Bit 12
If Benutzer And MenuItem.Bit Then 'Gibt > 0 zurück, also true
MenuItem.Visible = True
Else
MenuItem.Visible = False
End If

Wie gesagt, das würde mir jetzt als erstes in den Sinn kommen...

Ein gutes Bit-Tutorial (zwar für PHP, aber der Ansatz ist der gleiche)
ist übrigens hier: http://www.litfuel.net/tutorials/bitwise.htm

Gruss,

Martin

Ähnliche fragen