Symfony2 - 使用EventListener在form_login之前拦截请求

时间:2014-05-23 06:48:19

标签: symfony

我有一个kernel.request事件监听器服务,可以修改request,但不会对form_login处理的帖子请求执行。如何设法在SecurityBundle之前拦截请求?

1 个答案:

答案 0 :(得分:1)

虽然从未尝试过,但也许优先属性可以帮助

http://symfony.com/doc/current/cookbook/service_container/event_listener.html

  

还有一个额外的标记选项优先级是可选的,默认为0。   此值可以是-255到255,并且将按顺序执行侦听器   他们的优先级(从最高到最低)。当您需要保证时,这非常有用   一个监听器在另一个监听器之前执行。

Symfony \ Component \ Security \ Http \ Firewall似乎订阅了优先级为8的kernel.request,因此任何大于该值的内容都可以正常工作。

所以,试试这个

# config.yml
services:
    kernel.listener.your_listener_name:
        class: Acme\DemoBundle\EventListener\AcmeRequestListener
        tags:
            - { name: kernel.event_listener, event: kernel.request, method: onKernelRequest, priority: 100 }