2012-04-12 7 views
0

Ich bin wirklich CakePHPs Authentifizierung und Autorisierung Komponenten genießen verwenden und benutzerdefinierte Komponenten erstellt, die Situation zu passen, das finde ich mich in.Probleme mit mehreren Berechtigungskomponenten

Mein Problem rührt von der Tatsache, dass ich jetzt zwei Ebenen wollen der Genehmigung.

In meinem AppController habe ich Autorisierung konfiguriert als

public $components = array(
    "Auth" => array(
     'authorize' => array('controller','App'), 
    ) 
); 

Mit 'App' folgt auf eine benutzerdefinierte AppAuthorize Komponente verbindet, und 'controller' die ControllerAuthorize Komponente aufruft.

Während jede dieser Komponenten einzeln sehr gut funktioniert, ist es ihre Wechselwirkung, die Probleme verursacht.

Das Problem ist, dass wenn die Controller-Autorisierung (durch isAuthorized()) True zurückgibt, die zweite Komponente nicht überprüft wird. Umgekehrt wird AppAuthorize überprüft, wenn die Controller-Autorisierung false zurückgibt.

Was ich möchte passieren, ist für beide von ihnen immer überprüft werden; Rückgabe des logischen UND der zwei Antworten anstelle des logischen ODER, das gerade zurückgegeben wird.

Hat jemand irgendwelche Ideen von einem Weg um dies oder wenn dies sogar durch Kuchen Autorisierung Komponenten möglich ist?

Dank

Rob

Antwort

1

Warum verlängern Sie nicht einfach die ControllerAuthorize Klasse mit Ihrem AppAuthorize und fügen Sie die Bedingung, die Sie brauchen, und prüfen, ob die UND-Bedingung in der Klasse.

Cake selbst gewährt immer Zugriff, wenn eines der Authorize-Objekte true zurückgibt.

+0

Genial, das ist eine großartige Idee. Vielen Dank. –

Verwandte Themen