我正在設置一個kernel.response
事件,我想測試用戶是否登錄或不在其中。帶有授權檢查器的Symfony 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就可以了)。有沒有收費的方法?最終過濾這些內核響應事件?
你能分享來自Symfony的調試器確切的錯誤信息?你的CSS/JS應該一直工作。他們是靜態文件。 – mblaettermann
我設法得到了我的錯誤:'內部服務器錯誤| Symfony \ Component \ Security \ Core \ Exception \ AuthenticationCredentialsNotFoundException [message]令牌存儲不包含身份驗證令牌。一個可能的原因可能是沒有爲此URL配置防火牆「 –