Overriden onKernelRequest事件

时间:2014-03-02 15:12:02

标签: php events symfony

在我的Symfony2应用程序中,当找不到页面时,我收到错误(404)并且我正在尝试在onKernelRequest事件类中使用isGranted方法。

所以问题是:如何检查事件类中是否找到了页面?

//编辑

一些代码:

public function onKernelRequest(GetResponseEvent $event) {
        $session = $event->getRequest()->getSession();
        $securityContext = $this->serviceContainer->get('security.context');

        /* The line below makes the script throw the following error:
Fatal error: Uncaught exception 'Symfony\Component\Routing\Exception\ResourceNotFoundException' in C:\xampp................ in C:\xampp\....\vendor\symfony\symfony\src\Symfony\Component\HttpKernel\EventListener\RouterListener.php on line 144
        */
        if ($securityContext->isGranted('IS_AUTHENTICATED_FULLY')) {
            // ...
        } else {
            // ...
        }
    }

1 个答案:

答案 0 :(得分:1)

您不能使用is_granted,因为路由器在防火墙之前运行 请参阅此comment

在执行isGranted之前检查令牌:

if ( null !== $securityContext->getToken() && $securityContext->isGranted('IS_AUTHENTICATED_FULLY')) {
    // ...
} else {
    // ...
}