2010-03-08 13 views
6

Estoy usando CakePHP con los componentes Auth y ACL. Mi página se carga bien para usuarios no registrados, pero si intento iniciar sesión como usuario registrado, obtengo un bucle de redirección infinito en el navegador.Depuración de un bucle de redirección del navegador

Estoy seguro de que esto es algún tipo de problema de permisos, pero el problema existe incluso para los usuarios que tienen permisos para todo. La única forma de evitar este comportamiento es permitir '*' en el método beforeFilter de mi AppController.

¿Cuál es la mejor manera de solucionar este tipo de problema?

Gracias!

Respuesta

10

el objeto de depurar, intente insertar esta primera cosa en su AppController::beforeFilter():

$this->log("Here: {$this->here}, coming from: " . $this->referer(), LOG_DEBUG); 

Esto escribirá en el registro de /app/tmp/logs/debug.log. También puede combinar esto con la sustitución del método de redirección en el AppController:

function redirect($url, $status = null, $exit = true) { 
    $trace = debug_backtrace(); 
    $this->log("Redirecting to: " . Router::url($url) . ", initiated in {$trace[1]['file']} on line {$trace[1]['line']}", LOG_DEBUG); 
    parent::redirect($url, $status, $exit); 
} 
+1

Esto es exactamente lo que estaba buscando. ¡Gracias! –

1

Lo primero que verificaría es el método de inicio de sesión del controlador de usuarios. Si se implementa correctamente, normalmente enrutará todo el tráfico no verificado/autorizado al controlador de inicio de sesión. Sin embargo, si no le ha dado permiso al público, lo más probable es que genere un ciclo infinito. Por lo tanto, compruebe el app_controller (o donde quiera que esté almacenando los permisos de Auth/ACL) y asegúrese de que Users.login sea de acceso público.

2

También asegúrese de comprobar a través de los ajustes de su componente de autenticación en su app_controller está configurado correctamente.

http://book.cakephp.org/1.3/en/The-Manual/Core-Components/Authentication.html#setting-auth-component-variables

que tienden a definir explícitamente a todos. Tal vez revise algo como esto, http://www.webdevelopment2.com/cakephp-auth-component-tutorial-1/ Solo para asegurarse de que todo está configurado correctamente.

La otra cosa que he encontrado es de vez en cuando, beforeFilter() a veces puede noquear a la configuración de autenticación en su app_controller, por lo que tal vez tratar en sus controladores de tener

parent::beforeFilter(); 

Para asegurar que beforeFilter de su app_controller() es ser ejecutado.

Cuestiones relacionadas