Rechtesystem (Gruppen, Benutzer) auf DB-Ebene

etobias

Grünschnabel
Hallo, wie würdet ihr ein Rechtesystem mit Hilfe
von Gruppen und Benutzerrechten realisieren?

Ich stelle mir eine Tabelle Gruppen vor und weise jedem Benutzer eine oder
mehrere Gruppen zu (1:n). Dann denke ich an eine Rechtetabelle für die
Gruppen und eine für die Benutzer.

Wie sollte ich diese Rechtetabelle am besten aufbauen?

Ich hoffe Ihr könnt mir weiterhelfen. Danke
 
Auf Basis eines Bitschlüssels für die einzelnen Rechte und der User bekommt dann als Rechteschlüssel die Summe aller Einzelrechte zugewiesen die er hat.

Das ist denke ich der meistgebrauchte Weg und auch der ökonoomischste. Zu dem Grundgedanken findest du hier ein Tutorial.
 
Das Tutorial kenne ich und hatte es auch vor nach dem Schema zu lösen.

Ich möchte z.B. einen Button "Beitrag löschen" erscheinen lassen
wenn man Administratorrechte hat und den Button nicht erscheinen
lassen wenn man z.B. nur Benutzer ist.

Dann müsste ich doch vor dem betreffenden (X)HTML-Quellcode immer
erst die Rechte abfragen und dann je nachdem Entscheiden oder?
 
Vom Prinzip her wird der Benutzer sich ja irgendwann eingeloggt haben. Bei dieser Aktion überführst Du seine Berechtigung in eine Session-Variable.
Diese kannst Du dann für verschiedene Aktionen abfragen.

if($user_rights=="admin")echo "<a href='loeschen.php?id=$id'>löschen</a>";

... mal so als Beispiel.
Nur, wenn die User_Rights "admin" lauten, wird der Link angezeigt.
 
Original geschrieben von Slizzzer
Vom Prinzip her wird der Benutzer sich ja irgendwann eingeloggt haben. Bei dieser Aktion überführst Du seine Berechtigung in eine Session-Variable.
Diese kannst Du dann für verschiedene Aktionen abfragen.

if($user_rights=="admin")echo "<a href='loeschen.php?id=$id'>löschen</a>";

... mal so als Beispiel.
Nur, wenn die User_Rights "admin" lauten, wird der Link angezeigt.
Abhängig nach Rechten nur eine Kontrolle bei der Darstellung der Links einzubauen halte ich für reichlich fahrlässig. Tippt irgendwer den Link von Hand ein, ist er trotzdem drauf. Dort muss also erneut validiert werden.
 
Nach oben hin sind der Abschottung natürlich keine Grenzen gesetzt;) .

Sollte ja auch nur als einfaches Beispiel dienen. Sicherheit ist ohnehin eine Illusion!
Der sicherste Weg ist sicherlich per htaccess ein Verzeichnis mit Administrationstools zu sperren. Bei sensiblen Daten ist ein Login/Rechte-System auf Basis von PHP/MySQL sicher nicht die erste Wahl!
Für den "Normal" Website-Betreiber (Clanpage, o.ä.) reicht das aber aus.
 
Genau nach dem Style hatte ich das vor Slizzzer!

Das das als Sicherheit nicht reicht ist schon klar.
Aber bevor dann ein Formular abgeschickt / Link angeklickt
wird kann man gleich abfangen ob der User "valid" ist.

Hab mir davor schon ne leckere Rechte-Klasse geschrieben...
 
Zurück