Anulando el controlador de fallos de autenticación - Symfony2
Estoy extendiendo el controlador de fallas de autenticación y todo funciona principalmente bien, pero por un pequeño problema.
Este es mi services.yml:
http.utils.class:
class: Symfony\Component\Security\Http\HttpUtils
auth.fail:
class: Acme\MyBundle\AuthenticationFailure
arguments:
- @http_kernel
- @http.utils.class
- []
He configurado esto para ser usado en security.yml:
failure_handler: auth.fail
Este es mi Acme \ MyBundle \ AuthenticationFailure.php:
namespace Acme\MyBundle;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Security\Core\Exception\AuthenticationException;
use Symfony\Component\Security\Http\Authentication\DefaultAuthenticationFailureHandler;
use Symfony\Component\HttpFoundation\Response;
class AuthenticationFailure extends DefaultAuthenticationFailureHandler
{
public function onAuthenticationFailure(Request $request, AuthenticationException $exception)
{
//do something
}
}
El problema es que las opciones que he establecido en security.yml se ignoran. Sé que el tercer parámetro del método _construct de la clase es la matriz $ options, y no he pasado nada como el tercer parámetro (en services.yml), así que supongo que este es el problema y una solución podría Ser solo para pasar los valores. Supongo que también podría hacer algo como esto:
arguments:
- @http_kernel
- @http.utils.class
- %security.firewalls.secure_area.form_login%
.... No lo he probado porque el problema es que está codificado de forma rígida en services.yml y no es ideal, ya que si hubiera cambiado el nombre de secure_area se rompería. ¿Seguro que estos valores están disponibles de una mejor manera?