Lo resolví.
No es solución: How to disable redirection after login_check in Symfony 2
y aquí está el código que resuelve mi problema:
<?php
namespace Acme\MainBundle\Handler;
use Symfony\Component\Security\Http\Logout\LogoutSuccessHandlerInterface;
use Symfony\Component\Security\Http\Authentication\AuthenticationFailureHandlerInterface;
use Symfony\Component\Security\Core\Exception\AuthenticationException;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RedirectResponse;
class AuthenticationHandler implements AuthenticationFailureHandlerInterface, LogoutSuccessHandlerInterface
{
public function onAuthenticationFailure(Request $request, AuthenticationException $exception)
{
$referer = $request->headers->get('referer');
$request->getSession()->setFlash('error', $exception->getMessage());
return new RedirectResponse($referer);
}
public function onLogoutSuccess(Request $request)
{
$referer = $request->headers->get('referer');
return new RedirectResponse($referer);
}
}
para controlar los eventos se suman a security.yml por ejemplo:
form_login:
check_path: /access/login_check
login_path:/
use_referer: true
failure_handler: authentication_handler
logout:
path: /access/logout
target:/
success_handler: authentication_handler
y en las configuraciones .yml:
services:
authentication_handler:
class: Acme\MainBundle\Handler\AuthenticationHandler
¿por qué la ruta de falla no sería solo la solicitud de inicio de sesión? – JamesHalsall
porque puedo iniciar sesión desde cada subpágina. No tengo un formulario de inicio de sesión en la URL especificada, por lo que no quiero redirigir al usuario a la página de inicio cuando inicia sesión, por ejemplo, en otra página de perfil de usuario. –