Ich versuche LexikJWTAuthBundle mit FOSRestBundle zu verwenden, um meine API-Routen zu schützen. Es funktioniert gut, wenn ich manuell das JWT in der Kopfzeile meiner Anfragen gebe, aber für meine App möchte ich es automatisch in jeder API Anfragen Header über die 'Kernel.request' SF-Ereignis hinzufügen.Ereignis 'kernel.request' wird nicht korrekt versendet
Das Problem ist, dass mein Event-Abonnent nicht korrekt versandt wird, nehme ich an, dass LexikJWTAuthBundle vorher feststellen, dass ich keine JWT in meiner Anfrage habe und 401 Antworten zurücksende.
Die Veranstaltung Teilnehmer:
<?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");
}
}
Die Veranstaltung Teilnehmer Definition:
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 }
Wie kann ich dieses Problem lösen? Oder vielleicht, wenn Sie eine andere Möglichkeit kennen, das Token automatisch hinzuzufügen?