Symfony 2事件侦听器-身份验证失败/防火墙侦听器


Symfony 2 event listener - on authentication fail / firewall listener

所以我可以执行一个简单的请求侦听器:

public function onKernelRequest(GetResponseEvent $event)
{
    $request = $event->getRequest();
        //etc.

和在服务。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谈论"防火墙"听众,但我就是不明白如何做到。我敢打赌这只是一行代码或其他什么。

看看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