php.de

Zurück   php.de > Webentwicklung > Software-Design

Software-Design Diskussionen auf Profi-Niveau: PHP Lösungen auf konzeptioneller Ebene

Antwort
 
LinkBack (5) Themen-Optionen Thema bewerten
Alt 07.01.2009, 00:23   5 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 Rechteverwaltung

Hallo!

Ich habe vor langer Zeit mal ein eigenes Rechtesystem vorgestellt, das allerdings sehr beschränkt war. Da ich das erkannt hatte habe ich mich einfach mal nach der "Best Practice Benutzerverwaltung" erkundigt. Nun ist es soweit und ich möchte mich endlich an eine oder auch mehrere Klassen setzen, die mir das Verwalten von Nutzern erleichtern sollen. Doch nichts geht ohne ein Konzept und ich würde dies gerne mal mit euch durchkauen.

Ich habe mir überlegt das ganze auf drei Tabellen zu verteilen. Und zwar soll es eine Tabelle user, die die Benutzerdaten enthält, eine Tabelle categories, für die verschiedenen Bereiche und eine Tabelle permissions für die Rechteverteilung geben.

Code:
Table `user`:
+----+------+
| id | name |
+----+------+
|  1 | Joe  |
|  2 | Max  |
|  3 | Mic  |
+----+------+


Table `categories`:
+----+---------------------+
| id | name                |
+----+---------------------+
|  1 | Artikel lesen       |
|  2 | Artikel schreiben   |
|  3 | Artikel feigeben    |
|  3 | Kommentar lesen     |
|  3 | Kommentar schreiben |
|  3 | Kommentar feigeben  |
+----+---------------------+


Table `permissions`:
+--------+---------+
| userid | perms   |
+--------+---------+
|      1 |       1 |
|      2 |       1 |
|      3 |       1 |
|      3 |       2 |
+--------+---------+
Bei den Klassen wollte ich wie immer auf MySQLi setzen. Was haltet ihr davon? Wie würdet ihr die dazugehörigen Klassen aufbauen? Freue mich auf eure Antworten und Anregungen.

MfG, Andy
__________________
I'm so tired of slitting the throats of people calling me a violent psychopath.

Geändert von #Avedo (07.01.2009 um 00:44 Uhr).
#Avedo ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 07.01.2009, 00:41   #2 (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

kleiner Hinweis vorweg: category

- Weitere Kategorien wären: Artikel editieren und löschen, Rechte vergeben, User 'anheuern' und weitere Meta-Rechte.
- Gruppen wären gut, die Kategorien und/oder User bündeln
- Wie sieht denn das Konzept über die reine DB Struktur hinaus aus?
__________________
--
„Eins ist Fakt: Gescannt wird nackt!“

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

Geändert von nikosch (07.01.2009 um 00:46 Uhr).
nikosch ist offline   Mit Zitat antworten
Alt 07.01.2009, 00:45   #3 (permalink)
Erfahrener Benutzer
 
Registriert seit: 06.09.2008
Beiträge: 189
#Avedo befindet sich auf einem aufstrebenden Ast
Standard

Guter Hinweis .... ....
__________________
I'm so tired of slitting the throats of people calling me a violent psychopath.
#Avedo ist offline   Mit Zitat antworten
Alt 07.01.2009, 09:43   #4 (permalink)
Neuer Benutzer
 
Registriert seit: 27.12.2008
Beiträge: 23
Bleda befindet sich auf einem aufstrebenden Ast
Standard

Es kommt natürlich darauf an, wo du die Rechteverwaltung einsetzt, aber zB. bei einem cms wäre es doch wünschenswert, wenn man einem User auf einigen Unterseiten zB. das Recht zum Bearbeiten geben kann, während er auf anderen Seiten gar nichts darf.
Bleda ist offline   Mit Zitat antworten
Alt 07.01.2009, 10:11   #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

Hallo Andy,

wenn es dich interessiert, dann schau mal hier vorbei. auf dieser Seite habe ich ein Benutzer-Management vorgestellt, mit dem das Thema Funktionsberechtigungen gelöst wird. Aus deinen Schilderungen lese ich, dass du nicht nur Rechte auf Objekte (=Blog-Beitrag, ...), sondern auch Rechte auf Funktionen innerhalb einer Applikation verwalten möchtest (=Blog-Beitrag editieren, ...). Dies kann mit dem vorgestellten Datenmodell implizit über die Rolle eines Benutzers (innerhalb einer Applikation) gesteuert werden. Jeder Benutzer erhält über seine Rolle mehrere Permissions, die eine Zuordung von Identifiern und Werten enthalten (z.B. loadadminmenu=true).

Rechte auf Objekte können ganz einfach damit abgebildet werden, dass eine Beziehung zwischen einem Benutzer oder einer Gruppe auf ein Objekt deiner Anwendung hergestellt wird (siehe Diskussion in den von dir verlinkten Threads).
__________________
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 10.01.2009, 13:05   #6 (permalink)
Erfahrener Benutzer
 
Registriert seit: 28.09.2008
Beiträge: 760
PHP-Kenntnisse:
Fortgeschritten
Koala befindet sich auf einem aufstrebenden Ast
Standard

Interessant wär es vielleicht eine Usereigenschaft "Rechte" als Bitmuster zu haben.

z.B.:
Rechte: Lesen, Schreiben, Neu erstellen

Alle gesetzt (User hat alle Rechte) wäre 111.

So kann man z.B. eine Gruppe Besucher haben mit den Rechten 100, aber dennoch einzelnen Usern das Recht zum schreiben geben:

......100
XOR 010
----------
ergibt 110

Mit AND, NOT und OR ergeben sich weitere interessante Möglichkeiten:
so können einem User mit AND Rechte entzogen werden.
Bei AND kann er aber nie mehr Rechte bekommen als die Gruppe hat
der er angehört.

Geändert von Koala (10.01.2009 um 13:10 Uhr).
Koala ist offline   Mit Zitat antworten
Alt 10.01.2009, 14:17   #7 (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

Das Thema Bitmuster wurde, glaube ich, im oben verlinkten Thread auch schon ausgiebig diskutiert.
__________________
--
„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 10.01.2009, 15:30   #8 (permalink)
Erfahrener Benutzer
 
Registriert seit: 06.09.2008
Beiträge: 189
#Avedo befindet sich auf einem aufstrebenden Ast
Standard

Ja ich habe eine komplette Klasse vorgestellt, die sich mit diesem Thema beschäftigt hat. Sie war sogar sehr performant, erlaubte aber keine Gruppen und zudem kann man maximal 64 Rechte vergeben, da der Integer in PHP nur bis 2^64 Bit geht.
MfG, Andy
__________________
I'm so tired of slitting the throats of people calling me a violent psychopath.
#Avedo ist offline   Mit Zitat antworten
Alt 13.02.2009, 16:06   #9 (permalink)
Neuer Benutzer
 
Registriert seit: 05.02.2009
Beiträge: 21
BumpyJohnson befindet sich auf einem aufstrebenden Ast
Standard

Baue gerade ein bisschen an einem RolllBasedAccessControl-System rum. Ist vielleicht auch eine Alternative. Wenn Interesse besteht kann ich auch ein bisschen meine Idee bzw. Implementierung posten.
BumpyJohnson ist offline   Mit Zitat antworten
Alt 13.02.2009, 22:43   #10 (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

Da wir uns im Softwaredesign-Forum befinden ist das genau der richtige Ort um Konzepte zu diskutieren. Hast du das von mir verlinkte UML mal angesehen? Geht das in deine Richtung?
__________________
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
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/software-design/50416-rechteverwaltung.html
Erstellt von For Type Datum
implementierung eines Rechtemanagements - XHTMLforum This thread Pingback 18.06.2009 16:57
Literatur :: Adventure PHP Framework (APF) This thread Refback 23.04.2009 18:59
Userrechtescript - Developer's Guide This thread Refback 09.03.2009 00:53
Userrechtescript - Developer's Guide This thread Refback 08.03.2009 10:12
Rechtesystem frage. - Forum: phpforum.de This thread Refback 15.02.2009 19:54

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
rechteverwaltung, php rechteverwaltung, php benutzerverwaltung rechteverwaltung, php user rechte verwaltung, php rechte verwaltung, rechteverwaltung php, php rechte geben, rechteverwaltung konzept, rechtekonzept objekte username uml, rechteverwaltung shared user php, uml rechteverwaltung, benutzerverwaltung mit rechten php, rechteverwaltung software, rechte verwaltung, benutzerverwaltung rechteverwaltung uml beispiel, datenbankmodellierung rechteverwaltung, rechteverwaltung datenmodell, php user und rechteverwaltung, rechteverwaltung html, benutzer rechte verwaltung konzepte

Alle Zeitangaben in WEZ +2. Es ist jetzt 10:02 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