¿Cómo obtengo loginRedirect desde varias ubicaciones de inicio de sesión en CakePHP?
Pregunta
Estoy tratando de hacer que la autenticación funcione a mi gusto en una aplicación CakePHP y me encuentre con un problema.
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 mismo el inicio de sesión funciona. Estoy enviando el formulario en la página de inicio a / Usuarios / Iniciar sesión y los registra y crea una sesión. El problema es que luego redirige al usuario a la página de inicio. Prefiero que se redirijan a la ubicación especificada en loginRedirect.
Si inicio sesión desde / users / login directamente, se reenvía a loginRedirect. Creo que el problema tiene algo que ver con publicar el formulario de una página a otra en lugar de hacerlo a sí mismo, ya que auth automáticamente quiere volver a la página anterior.
¿Algún pensamiento?
Solución
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 aún no lo ha hecho, debe mover el formulario a un elemento, para que pueda estar absolutamente seguro de que el formulario de inicio de sesión es idéntico entre las 2 vistas de inicio de sesión.
Otros consejos
Sí. auth tiene una función en la que te redirigirá a la página a la que intentaste acceder antes de iniciar sesión. Si la configuración de la redirección de registro no funcionó, puedes configurar el loginRedirect en falso y hacer un manual ($ this- > redirect ([..]) en la acción de inicio de sesión de UsersController ::
puedes desactivar $ autoRedirect configurándolo en falso y manejando la redirección por ti mismo. El problema con AuthComponent es que hay demasiado automágico que realmente no puedes controlar, o solo por hacks.
Una solución para su problema es eliminar la clave Session.Auth.redirect, por lo que AuthComponent siempre usará la URL $ loginRedirect:
$this->Session->del('Auth.redirect');