php response函数返回一个Response对象,但是控制器仍然被执行

v1l68za4  于 2023-04-04  发布在  PHP
关注(0)|答案(1)|浏览(146)

我有一个简单的类:

class Security implements EventSubscriberInterface
{

    public static function getSubscribedEvents()
    {
        return [
            KernelEvents::REQUEST => ['onRequest', 2],
        ];
    }

    public function onRequest(RequestEvent $event): ?Response
    {
        return new Response('Invalid !', 401);
    }
}

我检查了一下,这个onRequest()方法会为每个请求执行。如果该方法返回一个Response对象,则不应该执行控制器。用户应该立即看到返回的响应。
我不知道为什么,但它没有发生。你知道为什么和如何解决这个问题吗?

b1zrtrql

b1zrtrql1#

不返回Response,而是使用

$event->setResponse(new Response('Invalid !', 401));

相关问题