Прослушиватель событий Symfony 2 - сбой аутентификации / прослушиватель брандмауэра
Так что я могу выполнить простой запрос на прослушивание:
public function onKernelRequest(GetResponseEvent $event)
{
$request = $event->getRequest();
//etc.
И в services.yml:
listener.my_request_listener:
arguments:
- "@translator"
class: MyBundle\EventListener\RequestListener
tags:
-
event: kernel.request
method: onKernelRequest
name: kernel.event_listener
-
event: kernel.response
method: onKernelResponse
name: kernel.event_listener
Теперь я хочу определить, не прошла ли аутентификация (используя встроенный компонент безопасности Symfony2). У меня есть все настройки безопасности, но мне нужно определить, когда происходит сбой безопасности. Что-то вроде этого:
public function onKernelAuthFail(GetAuthenticationFailEvent $event) {
//authentication failed, so action can be performed here before it redirects
}
Я видел это: http://api.symfony.com/2.3/Symfony/Component/Security/Http/Firewall/ListenerInterface.html и рассказ о слушателях "брандмауэра", но я просто не могу понять, как это сделать, Бьюсь об заклад, это всего лишь строка кода или что-то.
1 ответ
Посмотрите на DefaultAuthenticationFailureHandler
учебный класс. Должно быть под Symfony\Component\Security\Http\Authentication
, Это прослушиватель по умолчанию, который Symfony использует при сбое аутентификации.
Но вы можете написать свой собственный и использовать его, добавив его в свой security.yml
как это:
firewalls:
firewall_name:
form_login:
failure_handler: your.service.id
Вот полная ссылка на конфигурацию security.yml: http://symfony.com/doc/current/reference/configuration/security.html