php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack (1) Themen-Optionen Thema bewerten
Alt 14.09.2008, 16:06   1 links from elsewhere to this Post. Click to view. #1 (permalink)
Erfahrener Benutzer
 
Registriert seit: 06.09.2008
Beiträge: 189
#Avedo befindet sich auf einem aufstrebenden Ast
Standard Best Practices Benutzerverwaltung

Hallo!
Ich dachte ja immer es wäre eine gute Idee ein Rechtesystem zu schreiben, dass auf dem binären Zahlensystem aufbaut, doch wurde ich ja nun eines Besseren belehrt und möchte mich daher an die Entwicklung eines neuen Systems setzen. In dem Thread, in dem ich mein Binäres Rechtesystem vorgestellt hatte, wurden ja schon einige Alternativen genannt, wie ich ein solches System aufbauen könnte.

Eine Möglichkeit wäre natürlich alle Rechte eines Nutzers in eine Spalte rights in die Usertabelle zu schreiben und einfach durch Kommata zu separieren. Das halte ich bei großen Systemen für eine absolut unübersichtliche, Performance fressende und vorallem schlecht zu händelnde Variante.

Manko 10 hatte da denke ich schon eine deutlich bessere Alternative. Seine Idee war es drei Tabellen für die User, die Rechte (oder geschützten Bereiche) sowie eine Tabelle in der diese Zusammengeführt werden, also die Benutzer bezogenen Rechte (Permissions), zu erstellen. Auf diese Weise könnte man relativ einfach Module hinzufügen oder auch entfernen.

Schön fand ich auch die Idee von dr.e das ganze über Beziehungen zu regeln. Allerdings halte ich diesen Ansatz für etwas zu komplex. Man könnte an dieser Stelle vielleicht ansetzen und anstatt mit tausenden Tabellen mit Nested Sets arbeiten. Käme mir auch ganz geöegen, da ich mich bereits mit diesem Thema beschäftigt habe.

Ich würde jetzt auf der Idee von Manko 10 aufbauen und eine drei Tabellen Struktur aufbauen. Doch anstatt einer Tabelle, in der nur die existierenden Bereiche gespeichert sind, würde ich eine Tabelle einfügen, die auf Nested Sets aufbaut. Durch die Baumstruktur ist es nun sehr einfach möglich Rechte zur Verarbeitung eines, eines Bereichs oder allen Artikeln zu vergeben. Zudem kann man duch die Baumstruktur auch sehr sehr einfach verschiedene Navigationen von einander trennen, diese Navigationen individuell sortieren, weitere Module einbinden oder eine Sitemap erstellen lassen.

Was haltet ihr von einem solchen Ansatz? Gibt es Anregungen, Fragen oder weiterführende Ideen? Freue mich über jede Wortmeldung.
MfG, Andy
__________________
I'm so tired of slitting the throats of people calling me a violent psychopath.
#Avedo ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 14.09.2008, 17:09   #2 (permalink)
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.138
PHP-Kenntnisse:
Fortgeschritten
dr.e. sorgt für eine eindrucksvolle Atmosphäredr.e. sorgt für eine eindrucksvolle Atmosphäredr.e. sorgt für eine eindrucksvolle Atmosphäre
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo #Avedo,

für ein reines Benutzer-Management reicht dir auf das folgende UML: Adventure PHP Framework - Generischer OR Mapper. Damit solltest du alle weiteren Themen erschlagen können.

Nested Sets ist eine Möglichkeit hirarchische Strukturen (Bäume) abzubilden, sind für meine Begriffe jedoch hier nicht nötig.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline   Mit Zitat antworten
Alt 14.09.2008, 18:03   #3 (permalink)
Erfahrener Benutzer
 
Registriert seit: 06.09.2008
Beiträge: 189
#Avedo befindet sich auf einem aufstrebenden Ast
Standard

Das es gute Lösungen bereits gibt ist mir bekannt. Allerdings möchte ich selbst eine Lösung finden, da ich, um mene PHP-Kenntnisse zu erweitern, ein eigenes kleines CMS schreiben möchte. Das wird wahrscheinlich nie jemandem außer mir helfen, aber es ist eine gute Übung. Das Problem ist, dass dies erweiterbar sein soll und somit reicht mein bisher verwendetes binäres Rechtesstem nicht mehr aus.
MfG, Andy
__________________
I'm so tired of slitting the throats of people calling me a violent psychopath.
#Avedo ist offline   Mit Zitat antworten
Alt 14.09.2008, 18:20   #4 (permalink)
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 25.134
PHP-Kenntnisse:
Fortgeschritten
nikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz sein
Standard

Zitat:
Das es gute Lösungen bereits gibt ist mir bekannt. Allerdings möchte ich selbst eine Lösung finden, da ich, um mene PHP-Kenntnisse zu erweitern, ein eigenes kleines CMS schreiben möchte.
Was hat das eine mit dem anderen zu tun? Es sagt ja niemand, dass Du ein fertiges CMS benutzen sollst. Wenn Du ein Nested Set verwendest, benutzt Du auch einen Ansatz, den jemand anders erdacht hat. Wenn es also sinnvolle Patterns für eine Rechteverwaltung gibt, warum sie nicht nutzen?

Das UML sieht doch ganz vernünftig aus. Ich persönlich würde allerdings auch der Gruppe ein PermissionSet zuordnen.
__________________
--
„Eins ist Fakt: Gescannt wird nackt!“

Privatsphäre 2.0 - Nacktscanner mit Eyetracking.
Unser Flugzeug darf kein geschlechtsfreier Raum sein.
--

Geändert von nikosch (14.09.2008 um 18:23 Uhr).
nikosch ist offline   Mit Zitat antworten
Alt 14.09.2008, 18:22   #5 (permalink)
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.138
PHP-Kenntnisse:
Fortgeschritten
dr.e. sorgt für eine eindrucksvolle Atmosphäredr.e. sorgt für eine eindrucksvolle Atmosphäredr.e. sorgt für eine eindrucksvolle Atmosphäre
dr.e. eine Nachricht über Skype™ schicken
Standard

Zitat:
Zitat von Nikosch
...warum sie nicht nutzen?
Richtig. Das UML ist doch keine fertige Umsetzung, sondern nur die Beschreibung, wie ich es für richtig halte. Code sehe ich da keinen...
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline   Mit Zitat antworten
Alt 14.09.2008, 19:07   #6 (permalink)
Erfahrener Benutzer
 
Registriert seit: 06.09.2008
Beiträge: 189
#Avedo befindet sich auf einem aufstrebenden Ast
Standard

Ok stimmt. Dachte du wolltest mir das Framework nahelegen. Entschuldige. Schau es mir noch einmal in Ruhe an.
MfG, Andy
__________________
I'm so tired of slitting the throats of people calling me a violent psychopath.
#Avedo ist offline   Mit Zitat antworten
Alt 14.09.2008, 19:42   #7 (permalink)
Erfahrener Benutzer
 
Registriert seit: 06.09.2008
Beiträge: 189
#Avedo befindet sich auf einem aufstrebenden Ast
Standard

Entschuldigt, dass ich hier göleich ein zweites mal hinterher schreibe, aber ich muss gestehen, dass ich durch dieses Vorhaben, dass mir diese UML vermitteln soll nicht ganz durchsteige.

Also in der Tabelle umgtPermissions werden einfach die Rechte benannt und ihnen eine ID zugeordnet. Die umgtUser enthält einfach alle Benutzerdaten. Soweit glaube ich das verstanden zu haben. umgtRole und umgtGroup ist im Prinzip das gleiche doch ist an die "Rolle" eines Nutzers ganz bestimmte Rechte gekoppelt. An die Gruppe eines Nutzers können Rechte gekoppelt sein, zum Beispiel, dass man im Forum der Gruppe aggieren darf, dies muss aber nicht so sein. Leider verstehe ich nicht, welche Rolle nun umgtPermissionsSet bzw. umgtApplikation haben. Leider sehe ich auch keine Möglichkeit einem Nutzer direkt bestimmte Rechte zu geben, sondern man muss sehr sehr viele verschiedene Rollen zur Verfügung stellen, um alle Rechte abzudecken.

Ich hoffe ich habe das ganze nicht vollkommen falsch verstanden bzw. dass mir hier jemand etwas mehr Licht ins Dunkel bringen kann.
MfG, Andy
__________________
I'm so tired of slitting the throats of people calling me a violent psychopath.
#Avedo ist offline   Mit Zitat antworten
Alt 14.09.2008, 21:13   #8 (permalink)
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.138
PHP-Kenntnisse:
Fortgeschritten
dr.e. sorgt für eine eindrucksvolle Atmosphäredr.e. sorgt für eine eindrucksvolle Atmosphäredr.e. sorgt für eine eindrucksvolle Atmosphäre
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo #Avedo,

gleich vorneweg: Rollen und Rechte sind nicht gleich, Rollen und Gruppen auch nicht! Dieser Fehler wird leider viel zu oft begangen.

Noch mal zur Verfahrensweise: Rechte definieren die Sichtbarkeit von Objekten, Rollen definieren, welche Aktionen auf Objekte, auf die ein Benutzer Rechte hat ausgeführt werden dürfen. Das 1:1 zu koppeln raubt dir die zweite Bewertungsebene, die du gerade bei mandantenfähigen Anwendungen dringend brauchst.


Zitat:
Also in der Tabelle...
Ok, du hast mit UML noch nicht viel zu tun gehabt. Das Diagramm zeigt keine Tabellen, sondern lediglich Objekte und deren Beziehung inkl. der Qualität der Beziehung. Ich empfehle dir schnellstens ein UML-Buch zu lesen, das hilft ungemein.


Zitat:
Leider verstehe ich nicht, welche Rolle nun umgtPermissionsSet bzw. umgtApplikation haben.
Das PermissionSet ist nochmal eine Abstraktion, die du streng genommen auch weglassen könntest. Die Idee dahinter ist, dass Teile einer Rolle auch generisch für andere Rollen definiert werden können. Fakt ist jedoch, dass sich eine Rolle implizit aus einem Satz an "Aktionserlaubnissen", den Permissions, zusammensetzt. Diese definieren, dass z.B. ein Menüpunkt "Löschen" angezeigt wird. Hat ein Benutzer also eine entsprechende Rolle, kann er Objekte, auf die er auch Rechte besitzt, löschen. Falls nicht, sieht er zwar die Objekte, kann aber diese nicht löschen. Gestaltest du das generisch genug, hast du ein recht probates Mittel, eine Backend-Applikation nahezu in alle möglichen Konfigurationen zu versetzen.


Zitat:
Leider sehe ich auch keine Möglichkeit einem Nutzer direkt bestimmte Rechte zu geben, sondern man muss sehr sehr viele verschiedene Rollen zur Verfügung stellen, um alle Rechte abzudecken.
Hier vermischst du wieder Rechte und Rollen. Um einem Benutzer alle möglichen Aktionen auf alle möglichen Objekte ausführen lassen zu können, muss er lediglich Rechte auf alle Objekte und eine Rolle besitzen, die alle ausführbaren Aktionen beinhaltet. Das mag zunächst nach viel Arbeit klingen, es bietet im Nachhinein jedoch eine sehr große Flexibilität.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline   Mit Zitat antworten
Alt 14.09.2008, 22:16   #9 (permalink)
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 25.134
PHP-Kenntnisse:
Fortgeschritten
nikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz sein
Standard

Kannst Du auch bitte noch mal die Rolle der Gruppe (umgtGroup) im Modell erklären? Trotz Kommentar verstehe ich nicht, wie sie bestimmte Rechte auf eine Usergruppe abbilden kann.
__________________
--
„Eins ist Fakt: Gescannt wird nackt!“

Privatsphäre 2.0 - Nacktscanner mit Eyetracking.
Unser Flugzeug darf kein geschlechtsfreier Raum sein.
--
nikosch ist offline   Mit Zitat antworten
Alt 14.09.2008, 23:00   #10 (permalink)
Erfahrener Benutzer
 
Registriert seit: 06.09.2008
Beiträge: 189
#Avedo befindet sich auf einem aufstrebenden Ast
Standard

Danke dr.e. für deine Erläuterungen. Ich werde mir, wie von dir empfohlen möglichst bald ein Buch zum Thema UML anschaffen. Ich habe nun allerdings noch eine Frage. Ich habe zwar verstanden, dass diese Übersicht nur Beziehungen zwischen Objekten, keine Datenbankstrukturen darstellt, doch frage ich mich, wie eine Datenbankstruktur zu soetwas aussehen könnte.
MfG, Andy
__________________
I'm so tired of slitting the throats of people calling me a violent psychopath.
#Avedo ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

LinkBacks (?)
LinkBack to this Thread: http://www.php.de/php-fortgeschrittene/47427-best-practices-benutzerverwaltung.html
Erstellt von For Type Datum
Adventure PHP Framework - Literatur This thread Refback 02.12.2008 15:17

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
.htaccess: alle umleiten auf info.html bis auf best. IPs Gumfuzi Server, Hosting und Workstations 8 17.02.2008 19:07
best bewerteten Bilder auswählen Maho88 Datenbanken 19 01.08.2006 18:51
[Erledigt] Button an best Tagen zu best. Uhrzeiten wechseln lassen PHP Tipps 2005-2 3 30.07.2005 12:52
The best h4x0r in the world!!!!! Freeaak Off-Topic Diskussionen 2 29.07.2005 18:54
String nach best. Zeichen durchsuchen PHP-Fortgeschrittene 10 19.07.2005 19:21
Auslesen eines Textes mit best. Länge aus DB-Tabelle PHP Tipps 2005 2 01.07.2005 00:00
Eine best. Zeile aus einer Datei löschen PHP Tipps 2005 9 23.04.2005 23:25
Fehlerhafte anzeige mit best. Browsern Flor1an HTML, Usability und Barrierefreiheit 6 10.11.2004 19:28
html-Datei ab best. Stelle auslesen PHP Tipps 2004 3 17.08.2004 17:38

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php benutzerverwaltung, benutzerverwaltung php, php best practices, php nutzerverwaltung, php best practice, benutzerverwaltung uml, uml benutzerverwaltung, einfache benutzerverwaltung php, nutzerverwaltung php, php benutzer verwaltung, benutzerverwaltung in php, php einfache benutzerverwaltung, php framework benutzerverwaltung, php framework userverwaltung, modell benutzerverwaltung, einfache benutzerverwaltung mit php, uml 2 benutzerverwaltung php, datenbankstruktur benutzerverwaltung, best practices benutzerverwaltung, gruppen rollen

Alle Zeitangaben in WEZ +2. Es ist jetzt 10:05 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum