2008-10-26 11 views
5

Estoy intentando que la autenticación funcione a mi gusto en una aplicación de CakePHP y se encuentre con un problema.¿Cómo obtengo el loginRedirect desde múltiples ubicaciones de inicio de sesión en CakePHP?

Quiero permitir que el usuario inicie sesión desde la página de inicio o desde una página de inicio de sesión dedicada. Estoy usando el componente Auth para administrar el inicio de sesión y ahora el inicio de sesión funciona. Estoy enviando el formulario en la página de inicio a/Usuarios/Iniciar sesión y se registra y crea una sesión. El problema es que luego redirecciona al usuario a la página de inicio. Prefiero que redireccionen a la ubicación especificada en loginRedirect.

Si inicio sesión directamente desde/users/login, lo reenvío a loginRedirect. Creo que el problema tiene algo que ver con la publicación del formulario de una página a otra en lugar de hacerlo a sí mismo, auth automáticamente piensa que quiere volver a la página anterior.

¿Alguna idea?

Respuesta

8

en el AppController

public function beforeFilter() 
{ 
    $this->Auth->autoRedirect = false; 
} 

en UsersController

public function login() 
{ 
    if($this->Auth->user()) 
    { 
     $this->redirect(array(
      'controller' => 'users' , 
      'action' => 'index' , 
     )); 
    } 
} 

Además, si no lo ha hecho usted debe mover el formulario en un elemento, por lo que puede estar absolutamente seguro que el formulario de inicio de sesión es idéntico entre las 2 vistas de inicio de sesión.

+0

Limpiar un montón de preguntas muy antiguas que nunca hice y acepto. Mis disculpas. Luego hice esto nuevamente para otro proyecto y esta sugerencia funcionó. No estoy seguro de por qué tuve problemas la primera vez (razón por la cual nunca acepté) – JoshReedSchramm

0

Sí auth tiene una función que le redirigirá a la página que intentó acceder antes de iniciar sesión. Si no funciona la configuración del redireccionamiento de logeo, puede intentar establecer el loginRedirect en falso y hacer un manual ($ this -> redirigir ([..]) en la acción UsersController :: login.

0

puede desactivar $ autoRedirect configurándolo en falso y manejando el redireccionamiento usted mismo. El problema con AuthComponent es que hay Demasiado automático que no se puede controlar realmente, o solo por medio de hacks.

Una solución para su problema es eliminar la clave Session.Auth.redirect, por lo que AuthComponent siempre usará el $ loginRedirect URL:

$this->Session->del('Auth.redirect'); 
Cuestiones relacionadas