AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Benutzerrechte für User, wie am besten
Thema durchsuchen
Ansicht
Themen-Optionen

Benutzerrechte für User, wie am besten

Ein Thema von Albi · begonnen am 29. Apr 2005 · letzter Beitrag vom 29. Apr 2005
Antwort Antwort
Albi

Registriert seit: 4. Mai 2003
Ort: Berlin
458 Beiträge
 
Delphi 7 Professional
 
#1

Benutzerrechte für User, wie am besten

  Alt 29. Apr 2005, 08:02
Datenbank: Interbase • Version: 7.1 • Zugriff über: IBX
Hallo,

ich will in meiner Anwendung soetwas wie Benutzerrechte unterbringen. Nun stelle ich mir die Frage wie ich das am besten anfangen kann.

Ich habe mir gedacht, ich lege eine extra Tabelle dafür an, wo die Rechte drinstehen. Nur wie kann ich das am besten in die Anwendung einbauen.

Soll ich in die Tabelle für jede SP, View usw ein einzelnes Feld in der Tabelle einfügen oder wie löst man das am besten?
Gruß

Albi
  Mit Zitat antworten Zitat
nieurig

Registriert seit: 26. Apr 2004
113 Beiträge
 
Delphi 6 Professional
 
#2

Re: Benutzerrechte für User, wie am besten

  Alt 29. Apr 2005, 08:42
Hi Albi,
ich mache so was immer (recht einfach gestrickt) indem ich eine Tabelle mit Usernamen (Windowsuser), eine mit Usergruppen und deren Rechten und eine Verknüpfungstabelle in der DB anlege. Beim Start wird der Windowsuser ermittelt und dann die Rechte in der Tabelle abgefragt. Die einfachste Möglichkeit ist dann Sichtbarkeit der Bedienelemente im Programm von den Rechte abhängig zu machen. Wenn ein Menübaum ausgeblendet ist, KANN der User garnicht mehr die versteckten Funktionen ausführen.

Alternativ kannst Du Dir auch die Rechteverwaltung des Datenbankprogrammes anschauen. Dort kann mit GRANT Befehl für alles eingestellt werden was der User darf. Wenn der User etwas tut was für ihn nicht gedacht ist tritt im Programm eine Exception auf, auf die man reagieren kann. Das ist für meine Fälle aber immer zu aufwendig gewesen.

Niels
Erspare Dir die Gedanken über ungelegte Eier !!!
  Mit Zitat antworten Zitat
Benutzerbild von MagicAndre1981
MagicAndre1981

Registriert seit: 4. Jun 2004
Ort: Nordhausen
2.214 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Benutzerrechte für User, wie am besten

  Alt 29. Apr 2005, 08:53
Zitat von nieurig:
Hi Albi,
ich mache so was immer (recht einfach gestrickt) indem ich eine Tabelle mit Usernamen (Windowsuser), eine mit Usergruppen und deren Rechten und eine Verknüpfungstabelle in der DB anlege. Beim Start wird der Windowsuser ermittelt und dann die Rechte in der Tabelle abgefragt. Die einfachste Möglichkeit ist dann Sichtbarkeit der Bedienelemente im Programm von den Rechte abhängig zu machen. Wenn ein Menübaum ausgeblendet ist, KANN der User garnicht mehr die versteckten Funktionen ausführen.
So habe ich das auch gemacht und das funktioniert gut.

Zitat von nieurig:
Alternativ kannst Du Dir auch die Rechteverwaltung des Datenbankprogrammes anschauen. Dort kann mit GRANT Befehl für alles eingestellt werden was der User darf. Wenn der User etwas tut was für ihn nicht gedacht ist tritt im Programm eine Exception auf, auf die man reagieren kann. Das ist für meine Fälle aber immer zu aufwendig gewesen.
Und problematisch bei den IBX-Komponenten. Die IBTable (falls die doch noch jemand nutzt ) kommt mit GRANTS nicht gut klar.
André
  Mit Zitat antworten Zitat
Albi

Registriert seit: 4. Mai 2003
Ort: Berlin
458 Beiträge
 
Delphi 7 Professional
 
#4

Re: Benutzerrechte für User, wie am besten

  Alt 29. Apr 2005, 09:33
Vielen Dank für die Antworten,

ich habe in IB schon die rechte gesetzt, ich habe ein Role angelegt und vergebe somit die Rechte. Nun ist es schon recht umständlich da ich jede Procedure in den Role aufnehmen muss. Nun könnte ich ja hunderte Role's anlegen um für jeden Benutzer die entsprechenden Rechte zuzuweisen aber das muss doch auf einfacher gehen - über eine zusätzlich Tabelle.

Mir ist aber nicht klar, wie ich diese Tabelle aufbauen soll und über diese dann eben die Rechte zuweisen.
Gruß

Albi
  Mit Zitat antworten Zitat
Benutzerbild von SubData
SubData

Registriert seit: 14. Sep 2004
Ort: Stuhr
1.078 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Benutzerrechte für User, wie am besten

  Alt 29. Apr 2005, 09:46
Ich hab in meiner letzten Anwendung nen 64 Zeichen String aus 0 / 1 benutzt und damit die Rechte vergeben ... Hinterher das Ding einfach als Int64 in die Datenbank gepackt und gut is... Wunderbar platzsparend -g-
Ronny
/(bb|[^b]{2})/
  Mit Zitat antworten Zitat
Igotcha

Registriert seit: 22. Dez 2003
544 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Benutzerrechte für User, wie am besten

  Alt 29. Apr 2005, 09:52
Zitat von Albi:
Vielen Dank für die Antworten,

ich habe in IB schon die rechte gesetzt, ich habe ein Role angelegt und vergebe somit die Rechte. Nun ist es schon recht umständlich da ich jede Procedure in den Role aufnehmen muss. Nun könnte ich ja hunderte Role's anlegen um für jeden Benutzer die entsprechenden Rechte zuzuweisen aber das muss doch auf einfacher gehen - über eine zusätzlich Tabelle.

Mir ist aber nicht klar, wie ich diese Tabelle aufbauen soll und über diese dann eben die Rechte zuweisen.
Also wenn ich Dich richtig verstanden habe, dann gehst Du das Problem falsch an. Wenn Du z.B. 100 Anwender hast, dann brauchst du nicht 100 Datenbankuser, sondern genau einen

Zumindest mache ich es so, dass es einen Datenbank-User gibt, nämlich mein Programm. Die Rechte der einzelnen User hinterlegst Du in der Datenbank - nicht in einer DB-User-System-Tabelle, sondern in deiner Rechtetabelle (wie auch immer die aussehen mag).

Über einen selbstgeschriebenen Login-Dialog stellst Du daraufhin die Rechte des Users in der Anwendung fest.

Ein Beispiel:

Ich entwickle eine modulare Anwendung, wo die einzelnen Module fachlich voneinander abgegrenzt sind. Über meine eigene Rechteverwaltung wird beim Login des Anwenders geprüft, für welche Module dieser berechtigt ist und dementsprechend ein Menü-Treeview aufgebaut, über den durch Doppelklick auf einen Eintrag das entsprechende Modul gestartet wird.

Gruß Igotcha
  Mit Zitat antworten Zitat
Albi

Registriert seit: 4. Mai 2003
Ort: Berlin
458 Beiträge
 
Delphi 7 Professional
 
#7

Re: Benutzerrechte für User, wie am besten

  Alt 29. Apr 2005, 10:14
Igotcha, genau so habe ich mir das vorgestellt. Der User Log sich ein, beim Einloggen wird in Rechte Tabelle nachgeschaut welche Rechte der jeweilige User hat.

Und genau da liegt mein Problem. Ich habe keinen Plan wie ich die Tabelle aufbauen soll und dann über die Tabelle den User die Rechte zuweise.
Gruß

Albi
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#8

Re: Benutzerrechte für User, wie am besten

  Alt 29. Apr 2005, 10:37
Im Anhang ist eine Access-Datenbank, in der Benutzerrechte für eine Anwendung abgebildet werden.
Also mit User / Gruppen / Rechte (=Permissions).
Angehängte Dateien
Dateityp: zip urights_489.zip (15,9 KB, 50x aufgerufen)
Andreas
  Mit Zitat antworten Zitat
Albi

Registriert seit: 4. Mai 2003
Ort: Berlin
458 Beiträge
 
Delphi 7 Professional
 
#9

Re: Benutzerrechte für User, wie am besten

  Alt 29. Apr 2005, 11:15
Hallo shmia,

vielen Dank für den Anhang. Und bei der Anmeldung erfolgt dann die Überprüfung was der User darf und was nicht, indem Du einfach die Tabelle GroupAcces abfragst.

Habe ich das so richtig verstanden?
Gruß

Albi
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#10

Re: Benutzerrechte für User, wie am besten

  Alt 29. Apr 2005, 12:20
Zitat von Albi:
vielen Dank für den Anhang. Und bei der Anmeldung erfolgt dann die Überprüfung was der User darf und was nicht, indem Du einfach die Tabelle GroupAcces abfragst.
Bei der Anmeldung wird zuerst in der Tabelle Users nachgeschaut und das Passwort geprüft.
Bei erfolgreicher & bei erfolgloser Anmeldung wird in die Tabelle Users geschrieben.
Mit LoginFailedCount und LoginFailedDate kann der User beim nächsten Login von evtl. Fehlversuchen gewarnt werden.
Danach wird in die Tabelle GroupMembers geschaut, um zu sehen in welchen Gruppen der User enthalten ist.
Der User erhält dann alle Rechte aus UserAccess PLUS alle Rechte aus GroupAccess für alle Gruppen in denen er Mitglied ist.
Alle gesammelten Permissions werden in einer Stringliste gesammelt.

Um diese Datenbank perfekt zu machen, müsste man über die Tabellen UserAccess und GroupAccess nicht nur Rechte
erteilen, sondern auch gezielt entziehen (revoke) können.
Wenn einem User oder einer Gruppe eine Permission entzogen wurde, kann er diese Permission auch nicht über die Mitgliedschaft in Gruppen erhalten, die dieses Recht haben.
REVOKE ist vorrangig vor GRANT.
Andreas
  Mit Zitat antworten Zitat
Antwort Antwort


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 23:35 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