Cómo cambiar el comportamiento de la ruta de destino predeterminada
Cómo cambiar el comportamiento de la ruta de destino predeterminada
De forma predeterminada, el componente de seguridad conservará la información de la última URL visitada (principalmente el nombre del firewall definido en security.yml). Redirige a los usuarios a esta ruta después de iniciar sesión correctamente y ayúdalos a permanecer en la última página web conocida que visitaron.
En algunos casos esto no es lo ideal. Por ejemplo, cuando la última URL de solicitud devuelve un objeto XMLHttpRequest con una respuesta HTML parcial o no HTML, el usuario será redirigido a una página web que el navegador no puede representar.
Para resolver este comportamiento, sólo necesita heredar la clase ExceptionListener y anular el método predeterminado llamado setTargetPath().
Primero, anule el parámetro security.exception_listener.class en su archivo de configuración.
Esto se puede hacer en su archivo de configuración principal (en Archivos de configuración en Aplicación) o en el archivo de configuración importado del paquete:
YAML:
# app/config/services.
parámetros:
# ...
security.exception_listener.class: AppBundle\Security\Firewall\ExceptionListener
XML:
p >
PHP: p >
// app/config/services.php
// ...
$container->setParameter('security.exception_listener.class', 'AppBundle\ Security \Firewall\ExceptionListener');
A continuación, cree su propio oyente ExceptionListener:
// src/AppBundle/Security/Firewall/ExceptionListener.php
espacio de nombres AppBundle\Security\Firewall;
usa Symfony\Component\HttpFoundation\Request;
usa Symfony\Component\Security\Http\Firewall\ExceptionListener como BaseExceptionListener;
p>clase ExceptionListener extiende BaseExceptionListener
{
función protegida setTargetPath(Request $request)
{
// No guardar ruta de destino para solicitudes XHR
// Puede agregar aquí cualquier lógica que desee
// Tenga en cuenta que las solicitudes que no son GET ya se ignoran
si ( $request->isXmlHttpRequest()) {
return;
}
parent::setTargetPath($request);
}
}
Agregue más o menos lógica aquí según lo necesite su solución.