检查symfony2中每个控制器和操作的会话

时间:2015-06-16 06:00:27

标签: symfony

我们如何在Symfony2中检查每个控制器和操作的会话。如果未找到会话,则将其重定向到主页。我可以在每个动作中检查会话,但我认为这不是最好的方法。 感谢。

2 个答案:

答案 0 :(得分:2)

注册您自己监听listener事件的kernel.request并执行您的逻辑。简短的例子:

class KernelListener
{

    private $router;

    public function __construct(RouterInterface $router)
    {
        $this->router = $router;
    }

    public function onKernelRequest(GetResponseEvent $responseEvent)
    {
        $request = $responseEvent->getRequest();

        if (!$request->getSession()->has(YOUR_KEY)) {
            $responseEvent->setResponse(new RedirectResponse($this->router->generate('HOME_PAGE_ROUTE')));
        }
    }
}

答案 1 :(得分:0)

我不知道在每个控制器和操作中都有内置的特殊功能来检查此选项。但我认为可以通过将会话检查代码放在每个控制器构造函数或初始化方法中来实现。

class ControllerName
{
   public function __construct()
   {
      //session checking code
   }    
}