2012-08-30 61 views
1

我有一個Symfony 2.1應用程序,其中根據所請求的url,我想在用戶證書過期時採取不同的操作。我使用的是默認情況下重定向到登錄網址的fos_userbundle。在我的情況下,我不想重定向,而是想返回客戶端將要處理的特殊響應。自定義未經身份驗證時採取的操作

想法#1:
我不確定我需要做什麼來完成這個。我已經瀏覽了代碼,發現Symfony\Component\Security\Http\Firewall\ExceptionListener正在捕獲拋出的異常,並最終設置了RedirectResponse。我想我需要在某處掛鉤並設置不同的迴應,但我還沒有找到它。

理念#2:
我想我可能需要設置其他防火牆,將不同的處理缺少憑據。這似乎是會有更多的工作,並不完全正確感覺

這兩個我的想法可能是基礎。看起來應該不難想象出來,但我已經搜索了很高,並且找不到答案。

回答

0

我不知道他們是否已經在2.1 vs 2.0中更改了內核監聽器的格式,但也許您可以創建一個處理onKernelRequest方法的監聽器,並檢查它們是否經過身份驗證。

kernel.listener.pageloadlistener: 
    class: Acme\DemoBundle\EventListener\PageLoadListener 
    tags: 
     - { name: kernel.event_listener, event: kernel.request, method: onKernelRequest } 

class PageLoadListener 
{ 
    public function onKernelRequest(GetResponseEvent $event) 
    { 
     //Do whatever here, you could pass in the security context in the construct of this class to get the user 
    } 
}