Welcome to the Cookbook

loading...

5.1.2 Zugriffsberechtigungen festlegen: Cakes INI-basierte ACL

Die erste von Cake implementierte ACL basiert auf INI-Dateien, welche im Cake-Pfad gespeichert werden. Obwohl es einfach ist und gut funktioniert, empfehlen wir, die datenbankbasierte ACL zu benutzen weil es möglich ist, neue ACOs und AROs aus der Anwendung heraus zu erzeugen. Die INI-basierte Variante war für einfache Anwendungen gedacht - und speziell für die Leute, die aus irgendwelchen Gründen keine Datenbank benutzen möchten.

In der Voreinstellung benutzt CakePHP eine datenbankbasierte ACL. Um die INI-basierte ACL zu aktivieren, muss man CakePHP beibringen, welches System es benutzen soll. Dies kann man durch ändern folgender Zeilen in app/config/core.php tun

//Diese Zeilen ändern:
Configure::write('Acl.classname', 'DbAcl');
Configure::write('Acl.database', 'default');

//in diese:
Configure::write('Acl.classname', 'IniAcl');
//Configure::write('Acl.database', 'default');
  1. //Diese Zeilen ändern:
  2. Configure::write('Acl.classname', 'DbAcl');
  3. Configure::write('Acl.database', 'default');
  4. //in diese:
  5. Configure::write('Acl.classname', 'IniAcl');
  6. //Configure::write('Acl.database', 'default');

ARO/ACO Berechtigungen werden in /app/config/acl.ini.php definiert. Der Grundgedanke ist, dass die AROs in INI Abschnitten mit drei Eigenschaften gespeichert werden: groups, allow, und deny.

  • groups: Namen der ARO Gruppen, in dem dieses ARO Mitglied ist.
  • allow: Namen der ACOs auf die diese Gruppe Zugriff haben soll
  • deny: Namen der ACOs auf die diese Gruppe keinen Zugriff haben soll.

ACOs werden in Abschnitten der INI-Datei definiert, welche nur die Eigenschaften allow und deny haben.

Um ein Beispiel zu geben, schauen wir uns an, wie die AROs, welche für Die Gemeinschaft des Rings™ erzeugt wurden, in INI-Syntax aussehen würden:

;-------------------------------------
; AROs
;-------------------------------------
[aragorn]
groups = Krieger
allow = Diplomatie

[legolas]
groups = Krieger

[gimli]
groups = Krieger

[gandalf]
groups = Zauberer

[frodo]
groups = Hobbits
allow = Ring

[bilbo]
groups = Hobbits

[merry]
groups = Hobbits
deny = Bier

[pippin]
groups = Hobbits

[gollum]
groups = Besucher

;-------------------------------------
; ARO Groups
;-------------------------------------
[Krieger]
allow = Waffen, Bier, Gesalzenes_Schweinefleisch

[Zauberer]
allow = Gesalzenes_Schweinefleisch, Diplomatie, Bier

[Hobbits]
allow = Bier

[Besucher]
allow = Gesalzenes_Schweinefleisch

Nachdem die Zugriffsberechtigungen gesetzt sind, kannst Du mit dem Abschnitt zur Zugriffsberechtigungsprüfung mithilfe der ACL Komponente weitermachen.