custom events authentication symfony hook

events - custom - symfony security authentication token



Haga algo justo después del éxito de inicio de sesión symfony2 y antes de redirigir? (1)

Estoy buscando desde hace un tiempo, para cualquier información, sobre cómo hacer algo después del éxito de la autenticación en Symfony2. Quiero volver a configurar la contraseña del usuario para usar bcrypt justo después de la autenticación exitosa utilizando hash antiguo. Necesito hacer esto cuando todavía tengo una contraseña simple válida, así que debería ser justo después de que las credenciales verifiquen y antes de redirigir.

¿Alguna pista de cómo lograr eso?

Encontré algo sobre el despachador de eventos en Symfony pero no puedo encontrar si hay algún evento después de la autenticación exitosa.

Por favor corrígeme si estoy tratando de hacer esto de manera incorrecta y sugiero un mejor enfoque.

// EDITAR

Ok, encontré el evento disparado justo después del éxito de autenticación, se llama security.authentication.success . Entonces ahora puedo adjuntarme a este evento, pero ahora no estoy seguro de en qué parte de mi código de límite debería adjuntar mi detector de eventos. ¿Debo hacerlo en mi /src/Pkr/BlogUserBundle/DependencyInjection/PkrBlogUserExtension.php en el método load() ?


Puede especificar un controlador de éxito de inicio de sesión que se ejecutará al iniciar sesión correctamente.

Por ejemplo, su security.yml

firewalls: main: pattern: ^/ form_login: success_handler: my.security.login_handler

Ahora crea la clase que implementa Symfony/Component/Security/Http/Authentication/AuthenticationSuccessHandlerInterface y al iniciar sesión con éxito, puedes hacer lo que necesites y manejar la redirección como mejor te parezca.

/** * */ public function onAuthenticationSuccess(Request $request, TokenInterface $token) { // handle it and return a response }

A continuación, cree un servicio con ese nombre en su services.xml para su paquete, o en su config.yml utilizando el controlador creado recientemente.

Originalmente descubrí cómo hacer esto siguiendo este tutorial:

http://www.reecefowell.com/2011/10/26/redirecting-on-loginlogout-in-symfony2-using-loginhandlers/