在我的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 {
// ...
}
}
答案 0 :(得分:1)
您不能使用is_granted,因为路由器在防火墙之前运行 请参阅此comment
在执行isGranted之前检查令牌:
if ( null !== $securityContext->getToken() && $securityContext->isGranted('IS_AUTHENTICATED_FULLY')) {
// ...
} else {
// ...
}