Php Symfony kernel.response侦听器和授权检查器

Php Symfony kernel.response侦听器和授权检查器,php,symfony,listener,Php,Symfony,Listener,我正在设置一个kernel.response事件,我想测试用户是否登录到它里面 这是我的密码: services.yml app.kernel.modal_injection: class: App\UserBundle\EventListener\ModalListener tags: - { name: kernel.event_listener, event: kernel.response } arguments: - @secur

我正在设置一个
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 ),
        );
    }
}
securityChecker->isgrated('IS\u AUTHENTICATED\u membered')){
返回;
}
//代码在这里
}
公共静态函数getSubscribedEvents()
{
返回数组(
KernelEvents::RESPONSE=>array('onKernelResponse',0),
);
}
}

我的问题是,在检查用户
是否经过身份验证时,请记住
在我的页面上提供css和js文件时,我会得到一个错误500(表示页面上没有js或css)。有办法收费吗?最终过滤这些上的kernel.response事件?

标记在静态文件中为
null
,因此
isgrated
返回错误500。因此,我必须在以下情况之前进行检查:

if ( $this->tokenStorage->getToken() !== null
        && $this->securityChecker->isGranted( 'IS_AUTHENTICATED_REMEMBERED' ) ) {
    return;
}

您能分享来自Symfony调试器的确切错误消息吗?您的CSS/JS应该始终有效。它们是静态文件。我设法找到了错误:
内部服务器错误| Symfony\Component\Security\Core\Exception\AuthenticationCredentialsNotFoundException[消息]令牌存储不包含任何身份验证令牌。一个可能的原因可能是没有为此URL配置防火墙
,但为什么您的静态文件由php提供服务?听起来像是一个错误的配置。htaccess@mblaettermann哦:/我想我有Symfony的默认值。你有没有举个例子让我比较一下?(我不太擅长
htaccess