2012-06-01 44 views
3

我有一個關於Symfony2的問題,我希望有人能幫助我。 Symfony在哪裏檢查用戶會話,並且要做什麼是沒有會話。就像重定向到登錄頁面一樣。捕捉會話超時Symfony2

我發現了一些類似的問題,但不是真的是我的意思。

爲什麼我想知道它?如果有會話超時。我想檢查這個調用是否是一個XmlHttpRequest。如果是這樣,我想返回一個JSON,以便JavaScript可以處理它。如果不是這樣的話。

謝謝!

回答

7

必須創建監聽

Registering Event Listeners and Subscribers

config.yml:

services: 
    mycompany.demobundle.listener.request: 
     class: MyCompany\DemoBundle\RequestListener 
     arguments: [@router, @security.context] 
     tags: 
      - { name: kernel.event_listener, event: kernel.request, method: onKernelRequest } 

和測試RequestListener如果會話超時:

$inactive = 600; 
$session_life = time() - $request->getSession()->('timeout'); 
if($session_life > $inactive && $request->isXmlHttpRequest()) 
    { 
     $headers['Content-Type'] = 'application/json'; 
     return new Response(json_encode($data), $status, $headers); 
+0

非常感謝,偉大工程! – jeroenjoosen