Die ACL meines MVC-Frameworks

Jetzt sind endlich wieder Ferien! 🙂 Das heißt, ich habe genug Zeit für mein Framework. Gerade hänge ich an der Sache mit den Zugriffsberechtigungen. Vielleicht hab ihr ja eine Idee 😉 Dann wäre ich über Kommentare sehr dankbar.

ZEND als Vorbild?

Ich stelle mir die Frage, ob ich es so wie die Kollegen von ZEND machen soll. im Zend Framework gibt es nämlich keine DB-basierte ACL (Access Control List). Dort wird alltes fest in einer PHP-Datei abgelegt.

Das hat Vor- und Nachteile:

Vorteile

  • Schneller als die DB-Lösung
  • Mehr Konfigurationsmöglichkeiten
  • Umsetzung ist um einiges einfacher als mit einer Datenbank

Nachteile

  • Man kann die Rechte nicht im Adminbereich verwalten, sondern muss immer die PHP-Datei editieren

Allerdings ist es ja auch nicht so, dass die Rechte besonders oft geändert werden müssen. Meistens wird das nur einmal gemacht und bleibt dann für immer so.

Aufbau bei Zend

Im Zend-Framwork sieht die ACL so aus:

  • Zend_Acl: Verwaltet die Rechte zwischen Role und Resource
  • Zend_Acl_Resource: Das kann z.B. ein Controller sein.
  • Zend_Acl_Role: Benutzergruppen, z.B. Admin, Guest, Member

Über bestimmte Methoden von Zend_Acl kann man dann festlegen, wer Zugriff auf was hat. Das wichtigste bei der ganzen Sache ist aber die Vererbung. Man kann z.B. festlegen, dass ein Mitglied (Member) alles darf, was ein Gast (Guest) auch darf. Das alleine wäre aber sinnlos. Deshalb kann man auch sagen, dass ein Mitglied ZUSÄTZLICH noch andere Rechte hat.

Es ist auch möglich, bei erbenden Rollen Rechte zu entfernen. Dazu fällt mir aber kein wirklich sinnvolles Beispiel ein.

Obwohl ich gegen über des ZEND-FW eigentlich eher abgeneigt bin, muss ich sagen, dass mir die Zend-ACL sehr gut gefällt.

Caching wäre eine Option

Was auch ginge, wäre eine Zend-FW-artige ACL, die fest in einer Datei verankert ist. Diese lädt aber immer in gecachtes Objekt, falls eins vorhanden ist. Dieses gecachte Objekt könnte dann auch von mir im Adminbereich bearbeitet werden. (serialize(), …)

Was sagt ihr dazu?

Wie würdet ihr es machen? Nested Sets kommen übrigens nicht in Frage, weil die zu komplex sind.

1 Star2 Stars3 Stars4 Stars5 Stars (1 Stimme, durchschnittlich 1,00 / 5)
Loading...


8 Kommentare zu “Die ACL meines MVC-Frameworks”

  1. nunja ich sehe das so: Verschiedene Projekte haben verschiedene Anforderungen. Deswegen denke ich das, gerade wenn es um die ACL geht, diese schon von vornherein feststeht und man diese später kaum noch abändern wird (bzw. es kommt recht selten vor).
    Der Ansatz im ZF ist daher ein recht guter, ich würde es sicherlich genauso angehen. ob caching oder nicht ist denke ich relativ man könnte es als option sehen.
    Wann veröffentlichst mal wieder ein paar code schnipsel 😉 bin einfach recht neugierig 😉

  2. Jo, da hast du recht.
    Ich habe jetzt die ACL schon fast fertig. Nur das Caching fehlt noch. Im Prinzip ist meine Access Control List genau gleich wie die von Zend, hat aber nicht ganz so viele Funktionen. Man kann z.B. nur die Rechte von einer Gruppe erben. Das reicht meiner Meinung nach.

    Das Caching werd ich wohl ganz normal mit serialize / unserialize machen und in einer DB ablegen. Ich denke, in einer DB ist die Sache schneller als in einer Datei. Außerdem kann ich in einer Datenbank mehrere Versionen der ACL ablegen und so bei Bedarf eine ältere wiederherstellen.

    Die nächsten Codeschnipsel kommen, sobald ich die ACL komplett fertig hab.
    Ich will eigentlich auch demnächst wieder am FW-Tutorial weitermachen, aber ich hab momentan keine Zeit dazu.

    Ich muss nämlich noch ein Programm für die Schule programmieren, aber das ist ne andere Geschichte 😀

    Freut mich, dass du neugierig bist 🙂 Richtig so

  3. […] im Artikel “Die ACL meines Frameworks” schon angekündigt wurde, wird mein Framework um eine ACL-Klasse erweitert. Vorbild ist […]

  4. Ich habe die ACL jetzt veröffentlicht: http://www.net-developers.de/2008/12/23/erste-version-der-acl-access-control-list/

    Es gibt jetzt aber doch Mehrfachvererbung. Ein paar Bugs sind noch drin, die werde ich jetzt noch beheben

  5. Is there any information about this subject in other languages?

  6. Why this web site do not have other languages support?

  7. Sorry, there is no english article about this topic.
    But you can ask me your questions. I’ll try to answer them here in the comments.

    Simon

  8. Die aktuellste Version meines HMVC-Frameworks erhaltet ihr ab sofort immer hier: http://www.net-developers.de/blog/2011/02/13/download-info-shfw-hmvc-framework-in-php/

Hinterlasse einen Kommentar!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

»Informationen zum Artikel

Autor: Simon
Datum: 20.12.2008
Zeit: 14:53 Uhr
Kategorien: Mein MVC-Framework
Gelesen: 8891x heute: 2x

Kommentare: RSS 2.0.
Diesen Artikel kommentieren oder einen Trackback senden.

»Meta