Итак, нет никакого «официального» события перед входом в систему.Но, к счастью, его не сложно установить, так как Symfony2 настолько расширяем.Хитрость заключается в том, чтобы использовать собственный сервис для обработки аутентификации.
Symfony использует этот класс при использовании формы входа:
Symfony\Component\Security\Http\Firewall\UsernamePasswordFormAuthenticationListener
Если вы переопределяете security.authentication.listener.form.class
Параметр (первоначально определенный в Symfony\Bundle\SecurityBundle\Resources\config\security_listeners.xml
) позволяет использовать пользовательский прослушиватель, который расширяет UsernamePasswordFormAuthenticationListener
.
Все, что осталось сделать, - это переопределить метод attemptAuthentication()
для отправки настраиваемого события.
(На самом деле вам также необходимо сохранить диспетчер событий как свойство класса в __construct()
)
Этот метод должен работать с другими методами аутентификации - все, что вам нужно сделать, это изменить соответствующий слушатель (например, BasicAuthenticationListener
, X509AuthenticationListener
и т. Д.)