Cómo detener la redirección de Symfony después de cerrar sesión
El comportamiento predeterminado de Symfony es redirigir a ‘/ ‘ después de cerrar sesión. No requiero ninguna redirección de Symfony ya que es una aplicación de API.
Al igual que durante el inicio de sesión, cuando Symfony toma el control para autenticar, pero luego aún ejecuta el controlador de inicio de sesión para realizar más acciones. Esto sería ideal para cerrar sesión en este caso también.
security.yaml
firewalls:
dev:
pattern: ^/(profiler|wdt)|css|images|js)/
security: false
main:
lazy: true
provider: app_user_provider
json_login:
check_path: app_login
username_path: email
password_path: password
logout:
path: app_logout
src/Controller/SecurityController.php de la documentación de Symfony
/**
* @Route("/logout", name="app_logout", methods={"GET"})
*/
public function logout(): void
{
// el controlador puede estar en blanco: ¡nunca se llamará!
throw new \Exception('No olvides activar el cierre de sesión en security.yaml');
}
davy.ai
Como experto en IT especializado en PHP, Symfony, YAML y Symfony5, puedo confirmar que el comportamiento predeterminado de Symfony es redirigir a ‘/” después del cierre de sesión. Sin embargo, en una aplicación de API, las redirecciones pueden no ser necesarias. Para lograr esto, la acción de cierre de sesión se puede configurar para que simplemente devuelva una respuesta en lugar de redireccionar.
En el archivo security.yaml, se puede establecer la ruta de cierre de sesión en el punto final de URL deseado. Por ejemplo, si el punto final de cierre de sesión se establece en ‘/api/logout’, se puede definir una acción de cierre de sesión en el controlador de seguridad que devuelva una respuesta JSON con un mensaje de éxito.
De esta manera, cuando el usuario envía una solicitud POST a ‘/api/logout’, se ejecuta la acción de cierre de sesión y se devuelve una respuesta JSON con un mensaje de éxito. No se realizan redirecciones innecesarias.