ich hab mich jetzt in den letzten beiden Tagen etwas in cakephp eingearbeitet und bin eigentlich recht begeistert davon. Allerdings hab ich immer noch des öfteren etwas damit zu kämpfen.
Mein aktuelles Problem:
Meine Applikation besteht im Moment aus den beiden Controllern Users und Advertisements. Ich habe die Auth-Komponente im AppController eingebaut, und soweit funktioniert das alles. Allerdings möchte ich nun in der default.ctp für eingeloggte User ein anderes Menü anzeigen.
Zunächst dachte ich "Super, da muss ich ja einfach Auth->isAuthorized() aufrufen." Ich habe dann recht schnell festgestellt, das das in der default.ctp nicht geht.
Also dachte ich mir, ich setze im AppController einfach eine Variable die ich dann abfrage:
- Code: Alles auswählen
- class AppController extends Controller {
var $components = array('Auth');
function beforeFilter() {
$this->set('authorized', $this->Auth->isAuthorized());
}
}
Beim Aufruf von /advertisements/index durfte ich dann allerdings feststellen, dass isAuthorized() nur beim UsersController true zurückgibt.
Mein nächster Gedanke war "dann pack ich einfach wie gewohnt nach dem Login ein authorized-Flag in die Session". Gesagt, getan:
- Code: Alles auswählen
- class UsersController extends AppController {
var $name = 'Users';
function beforeFilter() {
$this->Auth->autoRedirect = false;
}
function login() {
if ($this->Auth->user()) {
if (!empty($this->data)) {
$this->Session->write('authorized', true);
}
}
$this->redirect($this->Auth->redirect());
}
function logout() {
$this->Session->destroy();
}
}
Aber entgegen meiner Erwartungen war dieses Flag beim Aufruf des AdvertisementsControllers nicht in der Session zu finden. Hält Cake etwa für jeden Controller eine separate Session? Oder hab ich etwas falsch gemacht, bzw. steh ich einfach nur auf dem Schlauch?
Schon mal vielen Dank für eure Hilfe,
Viele Grüße Stefan
p.s.: Wirklich super Forum, vor allem mit vielen aktiven Mitgliedern