Rechtesystem für meine Website?

6 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Hi,

also wenn du tatsächlich eine Seite von Grund auf erstellen willst mit Nutzer basiertem Berechtigungssystem, hast du einen weiten Weg vor dir. Eventuell ist es sinnvoller auf ein CMS zurückzugreifen.

Je nach Anwendung bietet sich Drupal (sehr mächtige = hohe Einarbeitungszeit) oder Wordpress (etwas weniger mächtig = schneller Einstieg) + Members (ein Plugin).

Nun aber zur eigentlichen Frage:

um das ganze wirklich professionell und Zukunftsfähig zu gestalten benötigst du mehrere Tabellen:

  • User (sollte ja sowieso schon vorhanden sein)
  • Roles (Benutzerrollen zur Rollen basierten Rechtevergabe)
  • User-Roles (Zuordnung von Usern zu Roles)
  • Role-Permissions (Zuordnung von Roles zu einer Berechtigung)
  • (User-Permissions) (Zuordnung von Berechtigungen zu einem User)

Die Struktur solltest du einfach so aufbauen:

Nur Rechte die freigegeben sein sollen werden in der Datenbank gespeichert, solltest du eine neue Berechtigung einführen hat also zunächst keiner Zugriff darauf. Benutzerrollen sollten immer weniger oder gleich viele Berechtigungen besitzen wie ein zugeordneter User.

Mit irgendeiner festen Rechtestuktur, womöglich noch mit einer Bit-Struktur wirst Du m.E. nicht froh.

Standard für solche Zwecke ist eine Kombination aus Tabellen ähnlich wie von sawaswolf vorgeschlagen:

User

Roles

Rights

User_Roles

Roles_Rights

Wenn Du bei einer solchen Struktur Probleme mit der Funktion hast, ist es auch ganz einfach in irgendeinem Programmierforum Hilfe zu holen, jeder, der etwas Ähnliches schon mal gemacht hat, wird die Struktur verstehen.

Hallo!

Hast du schon eine Datanbank angeschlossen?

Dann mache es mit einer Tabelle in der Datenbank.

Berechtigungen sind doch eher statisch -- (1: alles, 2:etwas 3: etwas weniger

und 4: gar nix).

Und jedem User (die ja wohl in der Datenbank sind) ein Attribut für Berechtigungen geben -- natürlich ist eine Änderung immer aufwendig, aufwendiger als keine Änderung.

(new Berechtigung = UPDATE TABLE USER SET Berechtigung = 4 WHERE USER = 'pfuffi')

Aber die Berechtigung gehört zum User, ich sehe auch keine andere, sinnvolle Möglichkeit.

Gruß

Das wäre meiner Meinung nach die einfachste Methode, jedoch ist diese auch unpräzise. Was, wenn ich jede einzelne Aktion, die der User (oder die Gruppe) durchführt, kontrollieren möchte? In diesem Fall ist diese Methode ungeeignet, oder nicht? :)

0
@pfuffi

"unpräzise" verstehe ich nicht, die Berechtigung (ist im Beispiel) entweder 1 oder 2 oder 3 oder 4, und irgendwie musst du ja auch jeder Aktion eine Berechtigung geben (diese Berechtigung brauche ich mindestens) , und das über prüfen machst du ja nicht von Hand

z.B. vor jeder Aktion

SELECT Berechtigung From USER;

IF USER.Berechtigung < AKTION.Berechtigung THEN <USER darf>

                                                                    ELSE <USER darf nicht>

Kleine Anmerkung:: auch ich verwende manchmal noch Bit-Masken, aber ganz bestimmt nicht bei Web-Seiten (Bitmaske muss auch in die Datenbank) -- im allgemeinen halte ich Bitmasken gür veraltet bei den heutigen Rechnerumgebungen.

Gruß

0
@pfuffi

Wenn du erwartest, dass du sehr viele Berechtigungen haben wirst, dann nimm eine m:n Tabelle
- User
- Permissions
- permissionPerUser: userId, permissionId
sehr schnell indexierbar & wartbar und übersichtlich

0
@Foosel

Wenn ich Solch eine Tabellenstruktur erstelle, wie würde dann die abfrage der Berechtigungen aussehen? Verstehe ich das so richtig?:

SELECT * FROM Perm_per_User WHERE userID = 4 AND permissionID = 25

Und wenn die Anzahl rows>0  ist, dann ist dem User den Zugriff gewährt?

(Natürlich sind die IDs nur im Beispiel als Zahlen festgelegt)

0

Netflix Daten Verschlüsselung?

Hi Leute, Ich habe mich gefragt wie das Speichern von Offline daten wiedergabe von Netflix/Amazon Prime/Google Play Music ohne das man selbst an die Video/Audio Datei dran kommt und ob man das irgendwie mit C#/C++/PHP/Java nachstellen kann. Kennt sich einer von euch damit vielleicht aus?

...zur Frage

Outlook - Kalender freigabe ohne berechtigung?

Hallo ihr!

Ich bin IT-Techniker, heute wurde uns mitgeteilt das jeder normaler User den Kalender der Geschäftsleitung einfach öffnen kann. Dazu haben sie aber keine Berechtigung! Wie kann das sein? Exchange Server vorhanden...

...zur Frage

Teamspeak 3 - User verliert nach rejoin seine Gruppe

Hallo! Ich habe bisher gegooglet aber nichts passendes gefunden... Zumindest verliert der User seine Gruppe nach dem rejoin. Das ist nur bei der "Mod" Gruppe. Ich habe aber das erweiterte Rechtesystem eingeschaltet. Hab ich da etwas falsch eingestellt???

Danke im Voraus!

...zur Frage

TeamSpeak3 - Rechtesystem | erweitetertes Rechtesystem FRAGE

Hey, Ich hab ein problem in TeamSpeak 3. Es ist schwierig zu erklären.

Ich will Usern erlauben Temporäre Channel zu erstellen, aber die User sollen nicht alles bei den Channel einstellen können zb. will ich ich die rechte entfernen.

b_channel_create_with_maxclients b_channel_create_with_maxfamilyclients

i_channel_create_modify_with_codec_latency_factor_min i_channel_create_modify_with_codec_maxquality

b_channel_create_modify_with_codec_speex32 b_channel_create_modify_with_codec_speex16 b_channel_create_modify_with_codec_speex8

b_channel_create_with_description b_channel_create_with_topic

Die Rechte will ich entfernen aber wenn ich sie entferne und auf "Anwenden" und "Aktuallisieren" klicke, können User keine Channel mehr erstellen und bei den Einfachen Rechtesystem geht dann bei "Channel verwalten" - Client kann Channeltyp erstellen das temporary weg und es kommt unbekannt rein und dann werden bei den erweiteteren Rechtesystem die Rechte (oben genannt) gehen wieder an :/

Wer mir helfen kann das die Rechte (oben genannt) bei den erweiterten Rechtesystem aus bleiben und nicht nicht wieder an.

Bitte um schnelle antwort :) Danke.

MFG Moritzo

...zur Frage

[TS3] User soll sich Rang selbst geben?

Guten Tag!

Ich habe soeben auf meinem TeamSpeak einen Rang Namens Unanstupsbarkeit erstellt & suche nun eine Möglichkeit wie sich Gäste, Moderatoren & alle anderen Gruppen den Rang SELBST geben & entfernen können. Aber eben nur diesen Rang.

Wie kriege ich das hin? Habe das Rechtesystem bereits erweitert.

...zur Frage

Was möchtest Du wissen?