事件 'kernel.request' 未正确发送
Event 'kernel.request' doesn't dispatch correctly
我正在尝试使用 LexikJWTAuthBundle 和 FOSRestBundle 来保护我的 API 路由。
当我在请求的 header 中手动提供 JWT 时效果很好,但对于我的应用程序,我想通过 [=23] 在每个 API 请求的 header 中自动添加它=] 顺丰活动.
问题是我的事件订阅者似乎没有正确发送,我想 LexikJWTAuthBundle 之前检测到我的请求中没有任何 JWT 并且 return 我的 401 响应。
事件订阅者:
<?php
namespace MyApp\APIBundle\EventListener;
use MyApp\APIBundle\Controller\TokenAPIController;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
use Symfony\Component\HttpKernel\KernelEvents;
class RequestAPIListener implements EventSubscriberInterface
{
/**
* @var string Token API
*/
private $apiToken;
public function __construct(string $apiToken = null)
{
$this->apiToken = $apiToken;
}
/**
* {@inheritdoc}
*/
public static function getSubscribedEvents()
{
// dump('hi'); <---- This is execute when uncomment
// die;
return [
KernelEvents::REQUEST => [
'onRequest'
]
];
}
public function onRequest(GetResponseEvent $event)
{
dump($event, $this->apiToken); <---- This is not execute
die;
$request->headers->set('Authorization', "Bearer $token");
}
}
事件订阅者定义:
services:
myapp.api_bundle.event_listener.request_api:
class: MyApp\APIBundle\EventListener\RequestAPIListener
arguments: ['@=service("service_container").get("session").get("api_token")']
tags:
- { name: kernel.event_subscriber }
我该如何解决这个问题?或者如果您知道另一种自动添加令牌的方法?
问题出在我的自定义侦听器的优先级上。
防火墙侦听器在我的之前被触发,所以我为我的设置了更高的优先级:
public static function getSubscribedEvents()
{
return [
KernelEvents::REQUEST => [
['onRequest', 10]
]
];
}
我正在尝试使用 LexikJWTAuthBundle 和 FOSRestBundle 来保护我的 API 路由。 当我在请求的 header 中手动提供 JWT 时效果很好,但对于我的应用程序,我想通过 [=23] 在每个 API 请求的 header 中自动添加它=] 顺丰活动.
问题是我的事件订阅者似乎没有正确发送,我想 LexikJWTAuthBundle 之前检测到我的请求中没有任何 JWT 并且 return 我的 401 响应。
事件订阅者:
<?php
namespace MyApp\APIBundle\EventListener;
use MyApp\APIBundle\Controller\TokenAPIController;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
use Symfony\Component\HttpKernel\KernelEvents;
class RequestAPIListener implements EventSubscriberInterface
{
/**
* @var string Token API
*/
private $apiToken;
public function __construct(string $apiToken = null)
{
$this->apiToken = $apiToken;
}
/**
* {@inheritdoc}
*/
public static function getSubscribedEvents()
{
// dump('hi'); <---- This is execute when uncomment
// die;
return [
KernelEvents::REQUEST => [
'onRequest'
]
];
}
public function onRequest(GetResponseEvent $event)
{
dump($event, $this->apiToken); <---- This is not execute
die;
$request->headers->set('Authorization', "Bearer $token");
}
}
事件订阅者定义:
services:
myapp.api_bundle.event_listener.request_api:
class: MyApp\APIBundle\EventListener\RequestAPIListener
arguments: ['@=service("service_container").get("session").get("api_token")']
tags:
- { name: kernel.event_subscriber }
我该如何解决这个问题?或者如果您知道另一种自动添加令牌的方法?
问题出在我的自定义侦听器的优先级上。
防火墙侦听器在我的之前被触发,所以我为我的设置了更高的优先级:
public static function getSubscribedEvents()
{
return [
KernelEvents::REQUEST => [
['onRequest', 10]
]
];
}