所以我可以执行一个简单的请求监听器:
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并谈论'防火墙'听众,但我无法理解如何做到这一点。我打赌它只是一行代码或其他东西。
答案 0 :(得分: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