Rechteverwaltung auf Websiten

Hawkster

Erfahrenes Mitglied
Hallo allosamt,

stehe jetzt schon wieder (wie an vielen Projekten) an dem gleichen Problem.

Man hat viele Benutzer und jeder darf nur bestimmte Sachen.
Jedesmal stelle ich mir die gleiche Frage: "Wie mach ich das am geschicktesten und wie bleibe ich am dynamischsten".

Jetzt habe ich mal ein Ganz neue Idee ;)

Folgendesmaßen, nehmen wir mal an jeder User hat in der MySQL-Tabelle eine Spalte namens "user_rights", diese ist ein VARHAR(255). D.h. wir bekommen 255 Zeichen in diesen Datentyp.

Festlegung:
0 => Darf nicht anschauen, schreiben, ändern usw
1 => Darf NUR anschauen, aber nicht schreieben ändern...
2 => Darf Anschauen + schreiben
3 => Darf Anschauen + schreiben + verändern
4 => Darf anschauen + schreiben + verändern + löschen

Unser String vom Typ Varchar könnte nun folgendermaßen aussehen:
011124213

Jedes Zeichen stellt einen Bestimmten Websiten-Bereich da, das Erste z. B. die news, das 2. Die member usw.

Wäre das "gut", oder eher schlecht?!
 
Meiner Meinung nach, entsteht dadurch zuviel unnötige Last beim Prüfen auf die Rechte. Du musst jedesmal den String zerlegen und entsprechend vergleichen. Noch dazu müsste jede neue Sektion hinten angehängt werden, obwohl sie in der Priorität eigentlich nach vorne müsste z. B.

Ich würde eher mit einer eigenen Tabelle user_rights arbeiten mit folgender Struktur:
id user_id sektion rights

Dadurch hast du zwar pro User immer eine Vielzahl von Zeilen, aber du müsstest auch immer nur diejenige auslesen, die du grade brauchst und nicht immer alle verarbeiten um für eine Sektion zu prüfen.

user_id sollte natürlich ein Fremdschlüssel für deine Usertabelle sein, Sektion kann dabei eine numerische ID als auch ein richtiger Name sein und rights eben dein gewünschtes Zahlenformat.
 

Neue Beiträge

Zurück