Zur Boardunity Forenstartseite

Zurück   Boardunity & Video Forum » Technik » Programmierung und Datenbanken

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #26  
Alt 03.02.2006, 09:05
Benutzerbild von Nev
Nev Nev ist offline
Sven M. Maderbacher
 
Registriert seit: 10.2003
Ort: Österreich / Wien
Beiträge: 60
Dein Rechte-System hat einen kleinen Hacken

Ein Mod kann alle Beirtäge in jeder Sektion bearbeiten bzw. löschen.
das wäre in meinen Augen ein Super-Mod

Ein Mod darf nur in seiner Sektion diese Rechte haben.

__________________
Sven-Marcus Maderbacher
Cu l8er
Nev the XxX

Projekte:
www.Nev-Hilft.de die Seite für Coder
Master of www.Burnworld.de
  #27  
Alt 03.02.2006, 14:09
Mitglied
 
Registriert seit: 01.2005
Beiträge: 137
Die Rechte werden immer nur für einen Bereich bzw. eine Kategorie vergeben und kann man somit variieren. Ich bin mir momentan nur nicht ganz im klaren, wie die DB-Strukur dafür aussehen müsste...

  #28  
Alt 03.02.2006, 14:51
Mitglied
 
Registriert seit: 01.2005
Beiträge: 137
Einmal gibt es eine module-Tabelle, in der die Zugriffsrechte für einen Bereich vergeben werden können, weitere Rechte werden dann getrennt davon nochmal für jede (Sub-)Kategorie bzw. Aktion des Moduls/ Bereichs vergeben.

Dazu sollte wohl eine Tabelle [MODUL]_rechte Tabelle exisiteren, die Spalten entsprechend der obigen Rechte besitzt und diesen wiederum werden dann Gruppen- und/ oder User-ID's zugeordnet.

Könnte das so funktionieren?

  #29  
Alt 03.02.2006, 14:58
Benutzerbild von Nev
Nev Nev ist offline
Sven M. Maderbacher
 
Registriert seit: 10.2003
Ort: Österreich / Wien
Beiträge: 60
Ich glaube, du solltest dir das ganze nochmal genau überlegen, auf was du dich da einlässt

So einfach wie du, dir das vorstellst, ist es ned.

Da müssen einige Sachen überdenken.

Warum sollte man ein Globales Recht auf eine Funktion legen, ausser wenn man sie gesamt Ausschalten will.

Du kannst die Beziehung Funktion - Recht nur auf die Gruppe oder auf den User legen.

__________________
Sven-Marcus Maderbacher
Cu l8er
Nev the XxX

Projekte:
www.Nev-Hilft.de die Seite für Coder
Master of www.Burnworld.de
  #30  
Alt 03.02.2006, 15:22
Mitglied
 
Registriert seit: 01.2005
Beiträge: 137
Das eine wäre alle User- und Gruppen-ID's in eine Spalte schreiben (z.B. Komma getrennt) und dann wieder auseinandernehmen oder 2 Spalten je Recht (1* User, 1* Gruppe) anlegen.

In meinen Gedanken sieht das alles ganz doll aus, doch die Umsetzung (DB-Tabellen) ist da problematisch bzw ich habe dazu keine gute Idee.

@Nev:
Dein Rechtesystem habe ich nicht verstanden, weshalb ich nicht weiß, ob dieses einfacher oder besser ist als meine Idee.

Das Rechtesystem, das ich umsetzen will, sollte einfach nur Gruppen und auch Usern Rechte vergeben/ prüfen. Also Gruppen und/ oder Usern Rechte und Verbote für gewisse Bereiche geben. Verbote haben Vorrang. Berechtigungen werden ODER_Verknüpft

Verbot => IMMER verbot!
1+ Berechtigungen => true
0 Berechtigungen => false

Vergebe ich Rechte nur für Gruppen, dann habe ich später evtl sehr viele Gruppen, wenn einzelne/ wenige User zusammen die Rechte für einen Bereich haben sollen und alle anderen keinen Zutritt...

  #31  
Alt 03.02.2006, 18:40
Mitglied
 
Registriert seit: 08.2005
Beiträge: 36
Vielleicht hilft es dir, wenn du dir erstmal ein paar fertige Usermanagement-Systeme anschaust. Um das Prinzip der Rollen zu verstehen, wuerde ich folgende Klassen vorschlagen: http://www.phpclasses.org/browse/package/513.html . Das Package ist nicht so umfangreich und meiner Meinung nach leicht zu ueberschauen. Da kannst du auch sehen, wie die Tables aufgebaut sein koennten. Ansonsten gibt es auf phpclasses.org noch diverse andere Beispiele die man sich anschauen kann um ein Grundverstaendnis fuer eine moegliche Umsetzung zu bekommen.

Ich kann dir wirklich nur zu einem Rollen-Rechtesystem raten. Die Flexibilitaet die du dir damit schaffst, willst du irgendwann nicht mehr missen.

  #32  
Alt 03.02.2006, 19:31
Mitglied
 
Registriert seit: 01.2005
Beiträge: 137
Ok, ich habe zwar oftmals Probleme mich in fremden Code einzuarbeiten, aber ich schau mit die Klasse mal an

Kann mir jemand diese Klasse an xetolosch.arcor.de schicken, ich bin dort nicht angemeldet...

  #33  
Alt 03.02.2006, 19:53
Mitglied
 
Registriert seit: 08.2005
Beiträge: 36
Hier gibts die direkt zum Download: http://adnoctum.netfirms.com/products/auth/

Wie gesagt, ist nur ein Beispiel wie sich sowas umsetzen laesst. Aber der Code ist gut zu durchblicken. Da musst du dich nicht gross einarbeiten. Ich glaube da waren auch Beispiele dabei.

  #34  
Alt 06.02.2006, 08:02
Mitglied
 
Registriert seit: 01.2005
Beiträge: 137
Momentan sehe ich immernoch die wenigsten Probleme mit einem gruppenbasierenden Rechtesystem.

- Aktionen besitzen Rechte (lesen, schreiben, editieren, ...)
- Diesen Rechten werden Gruppen zugeordnet (eindeutige Zahlen)
- Den Gruppen werden User zugeordnet (eindeutige Zahlen)

Geprüft werden diese dann mittels AND-Verknüpfung von benötigten Rechten und Gruppen über die eindeutigen Zahlen.

Dies ist das einzigste Rechtesystem, das ich umzusetzen verstanden habe. Ich werde mir auch weiterhin andere anschauen und überlegen, wie ich Userrechte noch integrieren kann.

  #35  
Alt 07.02.2006, 21:30
Mitglied
 
Registriert seit: 01.2005
Beiträge: 14
falls es noch nicht kam, es gibt da diese Doku vom Koehntopp über phplib. Da ist auch ganz gut erläutert, wie das auth-modul funktioniert, da kannst du dir vielleicht ein paar anregungen holen.

http://kris.koehntopp.de/artikel/phplib-deutsch/

  #36  
Alt 08.02.2006, 08:37
Mitglied
 
Registriert seit: 01.2005
Beiträge: 137
Danke, muss ich mir mal anschauen

Ist es ausreichend mit einem globalen bannen zu arbeiten, oder sollte man das für verschiedene Module getrennt lösen? Globaler Bann würde sich einfach realisieren lassen.

Hier die geplante Abfolge:
1.) User- und Gruppenrechte kombinieren
2.) notwendige Rechte für den Zugriff/ die Aktion holen
3.) Berechtigung prüfen (true oder false)
4.) Berechtigung wiederrufen wenn ein Verbot vorliegt
5.) Berechtigung wiederrufen wenn der User gebannt ist
return "true" oder "false"

Alternative andere Prüfreihenfolge:
=> liegt ein verbot vor oder ist der User gebannt? => Rechte nicht prüfen und direkt "false" zurückgeben


Welche der beiden Möglichkeiten haltet ihr für besser und sinnvoller?

  #37  
Alt 08.02.2006, 08:49
Mitglied
 
Registriert seit: 08.2005
Beiträge: 36
Mit Rollen einfach die jeweilige Rolle entziehen

  #38  
Alt 08.02.2006, 09:00
Mitglied
 
Registriert seit: 01.2005
Beiträge: 137
Diese Rolle oder die Berechtigung soll ja nur zeitweise entzogen werden und nicht dauerhaft. Somit kann ich die normalen berechtigungen nicht entziehen, sondern diese nur als ungültig markieren. Dazu benötige ich evtl eine neue Spalte.
Globales bannen kann ich in der Mitglieder-Tabelle problemlos mit einer Spalte realisieren, während ich für das Bannen einzelner Module in der gesamten module-Tabelle eine Spalte hinzufügen muss, wo ich alle gebannten Mitglieder-ID's reinschreiben muss. Diese müsste ich dann wieder trennen und prüfen, ob die entsprechende User-ID dabei ist. Also mehr aufwand wie dies für einen globalen Bann notwendig wäre.

Einfachere Möglichkeiten werden gerne genommen

  #39  
Alt 08.02.2006, 10:39
Mitglied
 
Registriert seit: 08.2005
Beiträge: 36
Also ich finde deine Rechtesystem ziemlich umstaendlich. Nicht nur von der Umsetzung, auch vom Handling. Wenn ich jemandem in einem Rollensystem einen Bereich, auch nur zeitweise sperren will, dann loesch ich seine entsprechende Rolle und wenn er wieder rein darf, dann bekommt er sie halt wieder. Einfacher gehts nicht. Die benoetigten Rollen lassen sich ganz simple in jedem Modul definieren und werden beim laden geprueft. Fertig. Globales Bannen ist genauso ueber eine Rolle moeglich, bzw. ueber eine Gruppe die entsprechende Rollen hat oder nicht hat und der der User zugeordnet ist.

  #40  
Alt 08.02.2006, 14:50
Mitglied
 
Registriert seit: 01.2005
Beiträge: 137
1.) Dann erklär mir bitte mal jemand verständlich wie das mit Rollen funktionieren soll und, abgesehen von der Bezeichung, der Unterschied zu finden ist...
Ich meine auch die Umsetzung in DB-Tabelles!

2.) Es ist immernoch die Frage ob es Sinn macht, eine Bannung nicht ausschließlich global durchzuführen. Ein Spammer wird wohl sein Beitragsniveau nicht nach dem Modul ändern

  #41  
Alt 09.02.2006, 12:42
Mitglied
 
Registriert seit: 08.2005
Beiträge: 36
1.) Hier wurden doch schon genug Links gepostet. Sowohl zum Prinzip als auch Beispielklassen. Da solltest du eigentlich alles finden. Tables brauchste in etwa folgende: users, groups, roles, users2groups, groups2roles verknuepft ueber die jeweiligen PKs.

2.) Ist halt die Frage wie flexibel du sein moechtest. Aber wenn du schon mit einem modularen System anfaengst moechtest du ja scheinbar recht flexibel sein. Also wuerde ich mich nicht von anfang an auf irgendwas festlegen.

  #42  
Alt 09.02.2006, 14:29
Mitglied
 
Registriert seit: 01.2005
Beiträge: 137
Dann wahrscheinlich nochmal Users2Roles, damit man Usern auch direkt eine Rolle zuteilen kann.

Beeinflusst es die performance, wenn man in einer Spalte kommagetrennte Daten ablegt, diese zu einem array aufsplitten?
Also "mid1, mid2, mid3, mid4,..." zu einem Array wandeln
Oder habt ihr eine alternative Möglichkeit für mich?

  #43  
Alt 09.02.2006, 15:29
Mitglied
 
Registriert seit: 05.2005
Beiträge: 53
Du kannst auch serialize und unserialize verwenden. ob das schneller ist weiß ich nicht

  #44  
Alt 09.02.2006, 17:43
Mitglied
 
Registriert seit: 01.2005
Beiträge: 137
Komplett Editiert!!!


Meine aktuelle Umsetzungsidee sieht wie folgt aus:

- das Rechtesystem verarbeitet nur Gruppen
- Userberechtigungen müssen über virtuelle Gruppen ablaufen (Userrechte über virtuelle Gruppen, d.h. User mit Sonderrechten braucht eine eindeutige GID. Umsetzung noch unklar...)

Tabelle mit Rechten:
Code:
aktion#lesen#schreiben#edit#löschen#edit_alle#löschen_alle
aktion => entsprechender Bereich/ Aktion, für die die Rechte vergeben werden
lesen => aufaddierte GID's mit Leseberechtigung
schreiben => aufaddierte GID's mit Schreibeberechtigung
edit => aufaddierte GID's mit Editierberechtigung
löschen => aufaddierte GID's mit Löschberechtigung
edit_alle => aufaddierte GID's mit "alle editieren" Berechtigung
löschen_alle => aufaddierte GID's mit "alle editieren" Berechtigung

So, jetzt bekomm ich wieder die Verbote nicht unter... *g*
Bei den Verboten könnte ich entweder für eine "Aktion" (z.B. ein Board in einem Forum) vergeben, was einfach zu realisieren wäre. Will ich verbote getrennt für lesen, schreiben, editieren usw. vergeben will, müsste ich wieder für jedes dieser Rechte eine Spalte für die Verbote vergeben...

Die eindeutige virtuelle GID für Userrechte ist problematisch. Diese muss ja in die Folge der GID's passen und trotzdem eindeutig sein. Z.B. erst später anfangen. Dies würde die Anzahl der möglichen Gruppen begrenzen und diese virtuelle GID müsste dynamisch erzeugt werden.
Oder die User-Sonderrechte werden in einer eigenen Spalte verwaltet und serialisiert abgespeichert...


ich bastle mal an diesem Gedanken weiter und höre gerne eure Meinung dazu. Das durchdenken und eure Beiträge helfen mir die Unterschiede und Vor-/Nachteile zu verstehen

Zitat:
Zitat von Aus einem anderen Forum... Dort habe ich auch dazu gepostet in einem bestehenden thread
Ich stimme axo voll zu. Ich bin auch nur hier gelandet, da ich ein rechtesystem schreiben will, das ebenfalls bitweise arbeitet Wink
Will das auch ungefähr so machen, wie oben beschreiben, muss mir nur überlegen, wie ich nicht nur Gruppenrechte, sondern auch Userrechte unterbekomme...

Habe schon überlegt, ob ich Mitgliedern mit eigenen Berechtigungen eine vituelle Gruppen-ID vergeben soll, damit diese Rechte wie eine weitere Gruppenmitgliedschaft verarbeitet werden.

[EDIT]
Ich vergebe verschiedene Rechte:
(- kein Zutritt => 0 // KEINE SPALTE!!!)
- lesen => 1
- schreiben => 2
- editieren (eigene) => 4
- löschen (eigene) => 8
- editieren (alle) => 16
- löschen (alle) => 32

In der DB mache ich dann für jedes dieser Rechte eine Spalte. zugeordnet werden diese Rechte einem Bereich oder einer Kategorie.

Dann vergebe ich jeder Gruppe eine eindeutige ID:
- 1. Gruppe => 1
- 2. Gruppe => 2
- 3. Gruppe => 4
...

In die Spalten der DB trage ich dann bei jedem Recht die berechtigten Gruppen ein (ID aufaddiert).
Also kann man durch bitweise verunden der Gruppenmitgliedschaften (ID's) und berechtigten Gruppen die Rechte erhalten.

So kann ich alle Berechtigungen für Gruppen erledigen, nun muss ich noch überlegen wie ich Verbote und Userrechte einbauen kann.
Globales Verbot (also für lesen, schreiben, editieren usw. ...) ist kein Problem, aber wie könnte ich nur lesen oder nur schreiben nehmen?
Verbote sollen Konflikte verhindern, wenn gewisse Gruppen keinen Zugriff haben sollen, aber durch eine andere Gruppe Zugriff erhalten

Irgendwelche Vorschläge?
[/EDIT]


Geändert von eBoy (09.02.2006 um 20:33 Uhr).
  #45  
Alt 12.02.2006, 14:36
Mitglied
 
Registriert seit: 01.2005
Beiträge: 14
!? raff ich jetzt nicht, ist das auch deine Frage oder hat sichs erledigt? Es sagt ja schon, dass er das ganze über ne normale Bitfolge macht, die er nur noch verknüpfen muss.

Aber dann fragt er, wie er sich die korrekten Rechte rausholt, oder hab ich das jetzt falsch verstanden?

Also sagen wir mal, ein User hat das "Recht" 24.

24 = 16 + 8 = B 0001 0000 + 0000 1000. Da musste halt jetzt nochn Algorithmus schreiben, der dir das Ding auseinandernimmt, ich würde da spontan auf nen Bitoperator verweisen:

PHP-Code:

$b 
56// is 8 + 16 + 32, also 0011 1000

$c $b 2// liefert 0, da 2 = 0000 0010 nicht drin enthalten ist.
$c $b 16 // liefert 16, da 16  (0001 0000) enthalten ist.
... // und so weiter
echo $c
probier damit einfach mal rum, das ist eigentlich ganz einfach

Antwort


Stichworte
-


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.
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Wie findet Ihr das System? Kitilop Entwicklung und Konzeption sozialer Software 1 06.03.2005 15:17
BlackBoard Internet Newsboard System 1.5 LonelyPixel Forensoftware 21 23.12.2004 23:54
Suche CMS System Daniel Richter Blog, CMS, Wiki und Sonstige 26 06.04.2004 01:40
Forum mit Content Management System vorgestellt Eike Projektvorstellung und Bewertung 6 15.02.2004 21:07






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