¿Cómo obtengo loginRedirect desde varias ubicaciones de inicio de sesión en CakePHP?

StackOverflow https://stackoverflow.com/questions/238358

  •  04-07-2019
  •  | 
  •  

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?

¿Fue útil?

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');
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top