所以我可以执行一个简单的请求侦听器:
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