Прослушиватель событий 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

Другие вопросы по тегам