![]() |
Datenbank: Interbase • Version: 7.1 • Zugriff über: IBX
Benutzerrechte für User, wie am besten
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? |
Re: Benutzerrechte für User, wie am besten
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 |
Re: Benutzerrechte für User, wie am besten
Zitat:
Zitat:
|
Re: Benutzerrechte für User, wie am besten
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. :wall: :wall: :wall: |
Re: Benutzerrechte für User, wie am besten
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-
|
Re: Benutzerrechte für User, wie am besten
Zitat:
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 |
Re: Benutzerrechte für User, wie am besten
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. |
Re: Benutzerrechte für User, wie am besten
Liste der Anhänge anzeigen (Anzahl: 1)
Im Anhang ist eine Access-Datenbank, in der Benutzerrechte für eine Anwendung abgebildet werden.
Also mit User / Gruppen / Rechte (=Permissions). |
Re: Benutzerrechte für User, wie am besten
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? |
Re: Benutzerrechte für User, wie am besten
Zitat:
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. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:56 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz