Necesito ejecutar algún código antes de verificar si las credenciales de un usuario son correctas. Actualmente estoy logrando esto con un detector de eventos personalizado que se activa en el evento kernel.request
y comprueba si la URL solicitada coincide con la configuración de security.yml check_path
. Pero esto es ineficiente ya que se ejecuta en cada solicitud. Soy consciente del evento onSecurityInteractiveLogin
, pero creo que se dispara después de un intento de inicio de sesión exitoso. ¿Alguien sabe si hay un evento de inicio de sesión previo, o donde podría enviar un evento personalizado yo mismo?¿Hay algún tipo de evento de "inicio de sesión previa" o similar?
Respuesta
Por lo tanto, no hay ningún evento de inicio de sesión 'oficial'. Pero afortunadamente no es difícil configurar uno ya que Symfony2 es tan ampliable. El truco es usar su propio servicio para manejar la autenticación.
Symfony utiliza esta clase cuando se utiliza un formulario de entrada:
Symfony\Component\Security\Http\Firewall\UsernamePasswordFormAuthenticationListener
Si anula el security.authentication.listener.form.class
parámetro (definida originalmente en Symfony\Bundle\SecurityBundle\Resources\config\security_listeners.xml
) se puede utilizar un receptor personalizado que se extiende UsernamePasswordFormAuthenticationListener
.
Todo lo que queda por hacer es anular el método attemptAuthentication()
para enviar el evento personalizado.
(En realidad también es necesario para almacenar el despachador de eventos como una propiedad de clase en __construct()
)
Este método debería funcionar con otros métodos de autenticación - todo lo que tenía que hacer es modificar el oyente apropiado (es decir BasicAuthenticationListener
, X509AuthenticationListener
, etc.)
- 1. ¿Hay algún evento onDocumentChange?
- 2. ¿Hay algún lenguaje simple implementado usando ANTLR o similar?
- 3. ¿Hay algún motor de alimentación de noticias (evento/actividad)?
- 4. ¿Hay algún tipo de API de Grooveshark?
- 5. ¿Hay algún tipo de CacheDependency en System.Runtime.Caching?
- 6. ¿Hay algún lenguaje estático de tipo pato?
- 7. ¿Hay algún tipo de "ReferenceComparer" en .NET?
- 8. Seguir un evento de inicio de sesión en Google Analytics
- 9. Después de un exitoso inicio de sesión de DEVISE, ¿cómo redirigir al usuario de vuelta a la acción previa que requería inicio de sesión?
- 10. ¿Hay algún evento "en el cambio DOM"?
- 11. ¿Hay algún método similar para dict en python?
- 12. ¿Hay algún objetivo maven que sea similar a 'dist'?
- 13. ¿Hay una plantilla de inicio de sesión integrada en Django?
- 14. sistema de inicio de sesión sin contraseña
- 15. Evento de inicio de aplicación WCF
- 16. ¿Hay algún tipo de "modo de rendimiento estricto" para MySQL?
- 17. ¿Hay algún tipo de palabra clave de "atributo" en C++?
- 18. ¿Hay algún evento como hashchange para cadenas de consulta?
- 19. Después de ejecutar $ (document) .ready(), ¿hay algún evento para eso?
- 20. ¿Hay algún tipo de herramienta de cobertura 'assertion' (para Java)?
- 21. ¿Hay algún proyecto de ejemplo que utilice Kohana con el registro de usuario y la autenticación de inicio de sesión?
- 22. ¿Hay algún tipo 'Any' en haskell?
- 23. Comandos de inicio de sesión de make
- 24. ¿Hay algún script/herramienta JAVADOCS similar para los archivos Javascript?
- 25. "Inicio" de Javascript similar a python.org?
- 26. ¿Hay un gancho de pago de Subversion o algo similar?
- 27. ¿Hay algún tipo de implementación de Interceptor en sqlite
- 28. página de inicio de sesión en phpmyadmin
- 29. ¿Hay algún programa similar a la pelusa para crontab?
- 30. ¿Sistema de inicio de sesión Plug and Play?
me puede dar un ejemplo, ya que no sé por dónde empezar. – pregmatch
Implementé esta sugerencia con estos pasos: 1) agrego una línea "security.authentication.listener.form.class: App \ BoardBundle \ Listener \ MyAuthListener" en su config.yml, sección de parámetros 2) realmente creo esta clase class MyAuthListener extends UsernamePasswordFormAuthenticationListener {3) en él, crea la función protegida AtteAuthentication (Request $ request) – user1312695