CakePHP & DIEVOLUTION Blog
CakePHP: Authorisation
Problemhilfe am Samstag!
Viele von euch werden das Problem kennen. Man hat eine schöne Applikation erstellt und möchte nun bestimmte Bereiche nur für bestimmte Benutzergruppen zugänglich machen. Zu diesem Zweck möchte ich euch als kleine Hilfe eine Auth-Funktion zeigen, die Controller “sichert”.
Zu diesem Zweck gibt es eine DB Tabelle, in der verschiedene Status-Zustände gespeichert sind, die jeweils mehr Möglichkeiten bekommen sollen:
- 0 - Gast, keinerlei Rechte
- 1 - Angemeldeter User, Grundrechte, bsp. Posten im Forum
- 10 - Premiumnutzer mit Sonderrechten
- 100 - Administrator
Dies funktioniert für kleinere Seiten sehr gut, da meist nicht mehr als 3-5 Userzustände möglich sind. Nun kann man genau einstellen, wer welche Funktion im Controller ausführen darf, und das geht so:
Kopiere diese Funktion in [root]/[app]/app_controller.php
-
function auth($level, $debug = 0) {
-
$status = $this->Session->read(“User.Status”);
-
if ($status[‘id’] < $level) {
-
$this->Session->setFlash(“Fehlende Berechtigung”);
-
$this->redirect($this->referer());
-
} else {
-
return true;
-
}
-
}
Der Status des Users ist in der Session User.Status gespeichert. (Achtung, nur verwenden wenn die Sessions auf dem Server verbleiben, bei Cookie Sessions unbedingt neuauslesen aus Datenbank).
Will man jetzt prüfen, ob der User Zugang zu einer Controllerfunktion besitzt, schreibt man dies so:
Beliebiger Controller:
-
function add() {
-
$this->auth(1);
-
….
-
}
Dies bedeutet, dass nur User, deren Status 1 und höher ist, Zugriff auf die Add Funktion bekommen. Alle anderen werden an die vorhergehende Seite
-
$this->referer();
zurückgeleitet.
Diese Möglichkeit soll nur als Beispiel dienen, wie man einfachen Webseiten die Möglichkeit einer Userkontrolle geben kann. Dieses System kann problemlos erweitert werden, z.B. auf Gruppensysteme.
Veröffentlicht am Samstag, den 26. Mai 2007 um 16:07 Uhr veröffentlicht
Du kannst einen Kommentar schreiben, oder einen Trackback auf deiner Seite einrichten.
Einen Kommentar schreibenAuf einen Blick
Archiv
- November 2008
- Oktober 2008
- August 2008
- Juli 2008
- Juni 2008
- Mai 2008
- April 2008
- März 2008
- Februar 2008
- Januar 2008
- Dezember 2007
- November 2007
- Oktober 2007
- September 2007
- August 2007
- Juli 2007
- Juni 2007
- Mai 2007
- April 2007
Kategorien
- Allgemein (72)
- Cake vs Rails (3)
- CakePHP (42)
- Meinung (16)
- Projekt (6)
- Rails (6)
- Tipps (28)
- Typo3 (4)
Letzte Einträge:
- 11.04.2007: Neustart
- 11.04.2007: Design Version 1 steht
- 11.04.2007: Blog