【发布时间】:2016-07-13 19:45:11
【问题描述】:
我正在设置一个kernel.response 事件,我想测试用户是否在其中登录。
这是我的代码:
services.yml
app.kernel.modal_injection:
class: App\UserBundle\EventListener\ModalListener
tags:
- { name: kernel.event_listener, event: kernel.response }
arguments:
- @security.authorization_checker
ModalListener.php
<?php
namespace App\UserBundle\EventListener;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
use Symfony\Component\HttpKernel\KernelEvents;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\Security\Core\Security;
use Symfony\Component\Security\Core\Authorization\AuthorizationChecker;
class ConnectModalListener implements EventSubscriberInterface
{
protected $securityChecker;
public function __construct( AuthorizationChecker $securityChecker )
{
$this->securityChecker = $securityChecker;
}
public function onKernelResponse( FilterResponseEvent $event )
{
$response = $event->getResponse();
$request = $event->getRequest();
if ( !$event->isMasterRequest() ) {
return;
}
if ( $request->isXmlHttpRequest() ) {
return;
}
if ( $this->securityChecker->isGranted( 'IS_AUTHENTICATED_REMEMBERED' ) ) {
return;
}
// CODE HERE
}
public static function getSubscribedEvents()
{
return array(
KernelEvents::RESPONSE => array( 'onKernelResponse', 0 ),
);
}
}
我的问题是,在检查用户 IS_AUTHENTICATED_REMEMBER 是否在我的页面上提供 css 和 js 文件时出现错误 500(意味着上面没有 js 或 css)。有没有办法收取这些费用?最终过滤那些上的 kernel.response 事件?
【问题讨论】:
-
你能分享一下来自 Symfony 调试器的确切错误信息吗?您的 CSS/JS 应该始终有效。它们是静态文件。
-
我设法解决了这个错误:
Internal Server Error | Symfony\Component\Security\Core\Exception\AuthenticationCredentialsNotFoundException [message] The token storage contains no authentication token. One possible reason may be that there is no firewall configured for this URL