Wie behebe ich einen in einer Umleitung Schleife stecken CakePHP-Anwendung?
Frage
Ich habe eine CakePHP Website bekommt, das in einer Umleitung Schleife steckt. Ich habe jedes Stück Code entfernt, die eine Umleitung tut und ich habe autoRedirect auf dem Objekt Auth ausgeschaltet.
Das Problem trat auf, als ich aus der Site angemeldet und wird beibehalten, selbst nachdem alle Cookies zu löschen und nur versuchen, die Homepage zu laden. Der Index Aktion ist in $this->Auth->allow
.
Ich sollte nicht, es versucht immer wieder zu / Benutzer / Login zu umleiten mich, die dann Schleifen umleiten. Die Login-Aktion ist auch in der erlaubten Liste
Hat jemand irgendwelche Ideen, was dieses verursachen könnte?
Lösung
Ihre <cake>/app/app_controller
sollten eine beforeFilter()
Methode mit allen Verhaltensweisen von Auth Komponente. Einer dieser Verhaltensweisen ist, wo zu senden, wenn ein Benutzer nicht angemeldet ist.
Sie werden versuchen, für so etwas wie:
// If cake should redirect automatically or you will do it in the User.login()
$this->Auth->autoRedirect = true;
// And if the autoRedirect is true, where to redirect
$this->Auth->loginRedirect = '/user/login';
G'luck
Andere Tipps
Dies geschieht auch in CakePHP 1.3, wenn Sie eine benutzerdefinierte Komponente hinzufügen, die Komponente statt Object erweitert.
hey manchmal, wenn Sie Db-Verbindung falsch sind ,,, wird die Anwendung auf die mysql verbinden versuchen, und wird in Schleife sein. Also, schaut Allways, wenn die Datenbank-Konfigurations recht.
Auf Wiedersehen.
Ich hatte das gleiche Problem genau, und wenn ich den MySQL-Dienst neu gestartet die Umleitung gestoppt. So fügen Sie diese zu Ihrer Liste der Dinge zu überprüfen.
Nun, es scheint, dass es eine Reihe von Gründen, warum dies in meinem Fall passieren könnte, war ich zugreifen möchten
cakeapplication / users / add
und es kam heraus, dass ich fehlte
'add'=>'*',
in der Berechtigungs Array in usersController.php
Vor kurzem hatte ich dieses Problem und ich weiß nicht, warum, aber es wurde festgelegt, wenn ich geändert (in meinem AppController before () -Methode):
$this->Auth->allow('*');
$this->Auth->allow();
Natürlich dann in meinem späteren Controller leugne ich die approriate Aktionen.