Мне нужно получить доступ к текущему пользователю в пользовательском прослушивателе ответов ядра в приложении Symfony v4.2.1, над которым я работаю.Когда я пытаюсь получить токен из TokenStorage в слушателе, я получаю ноль.Из того, что я прочитал , это нормально, потому что событие происходит до запуска брандмауэра безопасности Symfony, но, поскольку мне крайне необходимо получить доступ к токену в приемнике, я подумал, есть ли обходной путь для этого.В предыдущих версиях обходной путь должен был играть на приоритетах , но я не думаю, что это больше возможно.
Вот конфигурация брандмауэра из security.yaml:
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: true
guard:
authenticators:
#- App\Security\SSOAuthenticator
- App\Security\YesAuthenticator
main:
anonymous: ~
logout: ~
guard:
authenticators:
#- App\Security\SSOAuthenticator
- App\Security\YesAuthenticator
Маршрут, с которым у меня возникли проблемы, - это "/ api / вхождения".Вот соответствующая часть из команды debug: route:
api_occurrences_get_collection GET ANY ANY /api/occurrences.{_format}
Она автоматически назначается используемой мной платформой, платформой API, на основе имени класса сущности (Вхождение).
Вот приоритеты для соответствующего события:
"kernel.response" event
-----------------------
------- -------------------------------------------------------------------------------------------- ----------
Order Callable Priority
------- -------------------------------------------------------------------------------------------- ----------
#1 App\EventListener\MyResponseListener::onKernelResponse() 0
#2 ApiPlatform\Core\Hydra\EventListener\AddLinkHeaderListener::onKernelResponse() 0
#3 Symfony\Component\HttpKernel\EventListener\ResponseListener::onKernelResponse() 0
#4 Symfony\Component\HttpKernel\DataCollector\RequestDataCollector::onKernelResponse() 0
#5 Symfony\Component\Security\Http\RememberMe\ResponseListener::onKernelResponse() 0
#6 Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener::onKernelResponse() 0
#7 ApiPlatform\Core\HttpCache\EventListener\AddHeadersListener::onKernelResponse() -1
#8 Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelResponse() -100
#9 Symfony\Bundle\WebProfilerBundle\EventListener\WebDebugToolbarListener::onKernelResponse() -128
#10 Symfony\Component\HttpKernel\EventListener\SessionListener::onKernelResponse() -1000
#11 Symfony\Component\HttpKernel\EventListener\StreamedResponseListener::onKernelResponse() -1024
------- -------------------------------------------------------------------------------------------- ----------
РЕДАКТИРОВАТЬ
После еще нескольких тестов я понял, что это происходит только тогда, когда я вызываю веб-службу через браузер,Если используется curl, например, токен успешно получен.Таким образом, я думаю, что проблема связана не с ядром Symfony, а с взаимодействием между платформой API и моей пользовательской настройкой безопасности.