Boardunity & Video Forum

Boardunity & Video Forum (https://boardunity.de/)
-   Programmierung und Datenbanken (https://boardunity.de/programmierung-datenbanken-f23.html)
-   -   Ideales Rechte-System (https://boardunity.de/ideales-rechte-system-t862.html)

Fabchan 17.10.2003 17:40

Ideales Rechte-System
 
Schon wieder ein Thema von mir (hoffentlich wirft mir niemand vor, dass ich spamme! ;) )


Wie sollte man eurer Meinung nach ein idealews
Rechte-Management-System für ein Forum umsetzen?
Damit meine ich jetzt nicht, vom Umfang der Optionen (Kann posten, kann lesen, kann Umfragen erstellen,...),
sondern ehr im Sinne von:

- Soll jede Gruppe ein Standardrechte-System haben,
dass dann vom jeweiligen Forum überschrieben wird oder
- Wie werden die Rechte einem Board zugewiesen ?
- Wie speichere ich das Ganze?


Verschiedene Systeme gibt es ja genug!
Ich weiß einfach nicht, wie ich es in meinem Forum machen soll, bitte helft mir!

Frederic Schneider 17.10.2003 17:53

naja ich kann derzeit nicht genaues sagen... ich sage mal eine Mischung zwischen dem vBulletin (3) und dem wBB 2.1 Rechtesystem, das ist schon ideal.

Fabchan 17.10.2003 18:03

Sorry, ich kenne nur das vom vBulletin 2, ist das von 3 großartig anders?

DaddyCool 17.10.2003 18:05

Ich habe es in meinem aktuellen Entwurf so gemacht:

Es gibt für jede Gruppe einen Eintrag in der DB der festlegt was für Rechte sie normalerweise in den Foren haben sollten.

Dann können für jedes Forum nocheinmal extra Rechte gesetzt werden. Das geht sowohl für einzelne Benutzer als auch für ganze Gruppen.

Wobei in diesem Fall ein Forum immer die Rechte vom vorhergehenden erbt.

Edit: Rechte die einem Benutzer erteilt werden haben eine größere Gewichtung als die der Gruppe. Wurde für ein Forum für Gruppe als auch Benutzer unterschiedliche Rechte gesetzt. Werden die vom Benutzer genommen

DaddyCool 17.10.2003 18:06

Zitat:

Original geschrieben von Dracaelius
Sorry, ich kenne nur das vom vBulletin 2, ist das von 3 großartig anders?
Die einzige Änderung die ich bisher gesehen habe ist das ein User mehreren Benutzergruppen angehören kann

Fabchan 17.10.2003 20:57

@DaddyCool: Das mit den mehreren Benutzergruppen ist anscheinend in letzter Zeit sowieso die letzte Mode!
Auf jeden Fall danke für die Hilfe!

Fabchan 19.10.2003 00:44

Ich habe mri jetzt folgendes überlegt:

Jede Benutzergruppe bekommt Standardrechte zugewiesen und zwar in der selben Tabelle, in der sie gespeichert ist.

Tabelle: user_group

Jeder Benutzer kann in beliebig vielen Gruppen sein, daher benutze ich noch eine Tabelle, um die User mit den Gruppen zu verknüpfen.

Dabei bekommen alle Rechte immer den maximalen Wert zugewiesen, der in den Gruppen, denen der User angehört zu finden ist!

Beispiel:

User Admin0815 ist in folgenden Gruppen:

Mitglieder (can_use_acp = 0),
Administratoren (can_use_acp = 1),
Moderatoren (can_use_acp = 0)

Daher ist es ihm möglich, das ACP (Admin Control Panel) zu nutzen.

Wenn ein Bereich (zB ein Forum) andere Rechte gesetzt hat, werden die den Users überschrieben.

Ich weiß nur noch nicht, wie ich es speichern soll, wenn eine Berechtigung keinen Wert zugewiesen hat und stattdessen einen Standardwert benutzt!
Wie könnte man sowas machen? Als NULL vielleicht? Oder als 0=nein, 1=ja, 2=unset ?

DaddyCool 19.10.2003 09:53

wie wärs mit -1??

Feld darf nur nicht unsigned sein

Fabchan 19.10.2003 13:06

@DaddyCool: WIeso bin ich da nicht gleich drauf gekommen? Vielen Dank!

Kann ich das auch in ein TINYINT (1) Feld ganz normal eintragen?

DaddyCool 19.10.2003 13:52

Ja, es geht jede INT Spaltenart, nur wie gesagt, du darfst das Feld nur nicht als unsigned markieren.

Fabchan 19.10.2003 14:15

Okay, dann werde ich es so machen, dass das Array mit den User-Rechten erst mit den Daten aus seinen Gruppen gefüllt werden und dann alle Werte, die noch nicht gesetzt sind (bzw. auf -1 stehen) mit Standarddaten gefüllt werden!

Das sollte eigentlich keinerlei Sicherheitsmängel beinhalten oder probleme darstellen oder irre ich mich?

DaddyCool 19.10.2003 17:32

Ob es Sicherheitsprobleme geben wird musst du austesten.

Das kann ich so auf die schnelle jetzt nicht beurteilen.

Nev 27.10.2003 16:57

Hi @ll

Ich habe vor längerer Zeit auch ein Rechte System entwickelt, dies geht noch a bissal mehr in die Tiefe.

Wie erkläre ich das am Besten??

Also:
Ein User ist in einer oder in mehrern Rollen.
diese Rollen beinhalten eine oder mehrere Gruppen
Eine Gruppe hat rechte auf eine bestimmte Funktion.

Auf eine Funktionen gibt es Rechte: Read, Insert, Modify, Delete

Beispiel:
Es gibt die Rolle Redakteur
Diese hat mehrere Gruppen
zB
News-Redakteur, Termine-Red...

da es ein Redakteur ist, hat er
lesen, Einfügen- Rechte.

Warum das ganze??
Damit man nicht jeden User die Rechte vergeben muss, bildet man Gruppen, und schliesst diese in Rollen zusammen.

So erspart man sich viel Zeit beim neuanlegen eines Users.

Um das ganze noch zu versüssen, hab ich zusätzlich die Möglichkeit, den User Sonderrechte einzuräumen.
Das bedeutet nicht umbediengt, das er mehr kann, sonder das sind Sonderregeln, die nur diesen User betreffen.
Hier kann ich einen User zB noch das Löschen Recht auf eine Funktion geben, welches er über die Gruppe bzw. Rolle nicht hätte.
Andersrum kann ich ihm auch das Recht entziehen, obwohl er es hätte.

Das ganze kann man mit einen Redaktion-System einer Zeitung vergleichen.

DaddyCool 27.10.2003 17:16

@Nev
erinnert mich stark an das Schema das z.B. das vB3 und gerüchteweise auch das WBB2.1.schiessmichtod nutzen.

Dort kann man Gruppen zwar nicht zusammenfassen, einem Benutzer jedoch mehreren Benutzergruppen zuordnen.

Ist zwar nicht so komfortabel, sollte aber den gleichen Effekt haben.

Nev 27.10.2003 17:22

Hi @gain

Mein Rechte-System gibt es schon etwas länger
knapp 2 Jahre.:D

eBoy 30.01.2006 18:41

Mal sehen ob ich das richtig verstehe...

Man definiert gewisse Aktionen:
- lesen
- schreiben
- editieren
- löschen

Dann erstellt man Gruppen und vergibt diesen die Rechte an gewissen Aktionen:
- Autor: lesen, schreiben
- Moderator: editieren, löschen, lesen, schreiben
- Benutzer: lesen

Und nun nehmen wir mal das Beispiel Forum. Wie vergebe ich dann diese Rechte getrennt für die Boards?
Gruppen den Boards zuweisen und über die entsprechende Gruppe die Berechtigung erhalten?

Links zu eigenen Themen, die sich auch um ein rechtesystem drehen:
http://boardunity.de/rechtesystem-au...auf-t3790.html
http://boardunity.de/eigenes-cms-mod...bau-t3913.html

Nev 31.01.2006 11:11

Liste der Anhänge anzeigen (Anzahl: 1)
Hi eBoy

Ich fühle mich mal angesprochen

Beispiel für ein Forum:
Als Gast bekommst du generell das Kennzeichen Read
dies erlaubt den Besucher, alles zu lesen

Jedes Board ist wie ein Modul zu sehen.
d.h.:
Der Besucher muss in der Gruppe (Board) sein, und dort das Recht Lesen
ansonsten darf er nicht hinein.

dadurch kannst du auch den Gast wieder aussperren.

Der registrierte Besucher
Hat neben dem Recht: Read auch Modify
d.h. er darf auch seine Beiträge löschen.

Die Gruppen ist eine Zusammenfassung von Rechte.
Ein User kann in mehreren Gruppen sein.
Wobei sie zusammen ein gesamtes Recht defineren.

Ich hab vor längerer Zeit mal einen Text geschrieben, siehe attachment

eBoy 31.01.2006 11:34

Diese Gruppen wären dann vergleichbar mit einer Rechte-Datenbank, die für gewisse Aktionen die Rechte an die Gruppen vergibt. In diesen Gruppen muss der User dann Mitglied sein, um die entsprechende Aktion ausführen zu können.
Wobei diese Gruppen dann nichts mir den "Gruppen" zu tun hätte, die als Hauptgruppe angezeigt wird (Gruppenmitgliedschaft nach z.B. geschriebenen Beiträgen).
Text habe ich heruntergeladen und werde ich mir durchlesen, danke ;)

eBoy 31.01.2006 16:53

Das ganze sieht für mich wie ein einfaches Rechtesystem mit Gruppen- und Benutzerrechten...
Was hat es dann in kurzen Worten mit den "Rollen" auf sich?

Nev 31.01.2006 16:59

ein einfaches Rechtesystem mit Gruppen- und Benutzerrechten
geht ned so in die Tiefe, mit den Rechten (Read, Insert, Modify, Delete)
es ist angelehnt am Unix-Rechte-System

Die Rolle dient nur zur Unterstützung.
diese kann man definieren um sich die gesamten Zuweisungen für einen User zu ersparen is quasi eine Schablone.

Zusätzlich, was in dem Text ned rausgekommen ist, kannst du den User obwohl er die Rechte aus der Rolle hat, Rechte entziehen bzw. ihm auch Sonderrechte einräumen, die ausser halb seiner Rollen liegen.

So kannst du obwohl du Rollen vergibst, jeden noch zusätzlich anpassen.

LonelyPixel 31.01.2006 19:34

Zitat:

Zitat von Fabchan
Das mit den mehreren Benutzergruppen ist anscheinend in letzter Zeit sowieso die letzte Mode!

Das ist imo nicht die letzte Mode, sondern ein notwendiger Fortschritt! Eine Beschränkung auf eine Gruppe ist nicht akzeptabel, wenn man mehr als eine Handvoll Nutzer hat. In jedem mittelgrößeren Unternehmen ist jeder Mitarbeiten Teil mehrerer Gruppen/Projekte, hat oft mehrere Funktionen/Rollen, um so seine Arbeit zu verrichten. So kann man die Berechtigungen näher an der Wirklichkeit modellieren und muss nicht für jede Kombination eine neue spezielle Gruppe aufmachen und alle Nutzer durch die Gegend schieben. jm2c

eBoy 31.01.2006 20:17

Ich würde das mal so beschreiben/ machen:

Zugriffsrechte für Modul (z.B. in der Table "module") => grundlegendes Zugriffsrecht
Zugriffsrecht für Kategorie (z.B. Rechte-Table des Modules) => Darf der User, der das Modul betreten darf auch diese Kategorie betreten?
Berechtigung für Aktionen => Darf der User schreiben, (eigenes) editieren, (fremdes) moderieren oder gar administrieren?

Dazu noch global-Admin als Gruppe => besitzt alle Rechte


ich finde dein Rechtesystem nicht unbedingt schlecht, aber zu kompliziert, weshalb ich es auch nicht zu 100% verstehe...


Dazu würde ich versuchen das ganze einfach zu halten, also die Parameter (Rechte des Users/ der Gruppe und Voraussetzungen) nicht in der rechte-Klasse laden, sondern übergeben. Dann kann man die Funktion für die Zugriffsrechte für Module UND Kategorien für beides verwenden.

Ich muss mir da mal weitere Gedanken dazu machen ;)

Nev 31.01.2006 20:22

Hi @gain

Der Ansatz is eine Anregung, ned das Gelbe vom Ei

Jeder hat andere Anregungen bzw. Bedürfnisse.

Bisher hab ich mit dem System einfach alles abdeken können.

eBoy 31.01.2006 20:26

Es ist mir auch sehr hilfreich gewesen. Werde da einige meiner Ideen überdenken müssen und schauen, wie ich das Optimum für mich rausholfen kann.

eBoy 03.02.2006 09:37

Berechtigungen die ich wohl benötige:
- lesen (Zutritt)
- schreiben
- editieren (eigene)
- löschen (eigene)
- editieren (alle)
- löschen (alle)

So kann ich auch Mderatoren und Administratoren realisieren. Die User werden in Gruppen organisiert. Dieses System ist universell und beliebig erweiterbar. Man muss die Klasse/ Funktion nur erneut aufrufen und die zu prüfenden Daten und die Voraussetzungen mitübergeben.
Das ware wenig Code und universell einsetzbar... denke/ hoffe ich ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:26 Uhr.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25