2014-05-23 29 views
2

我有一個kernel.request事件偵聽器服務,它修改了request,但是它對於由form_login處理的post請求沒有執行。如何在SecurityBundle之前設法攔截請求?Symfony2 - 在帶EventListener的form_login之前攔截請求

+0

可能重複:http://stackoverflow.com/questions/8406001/is-there-any-sort-of-pre-login-event-or-similar –

回答

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 } 
+0

謝謝!我會嘗試一下,然後讓你知道。 – kokeksibir