Я реализовал прослушиватель с наивысшим приоритетом, который в зависимости от значения заголовка перенаправляет пользователя с моего сервера.
Поскольку это влияет на многих пользователей, я хотел бы выполнить перенаправление до того, как будут запущены все остальные слушатели, особенно также onKernelResponse этих слушателей.
Есть ли способ остановить и перенаправить пользователя в тот момент, когда вызывается мое перенаправление? Может быть, я могу перенаправить, не используя RedirectResponse? Но тогда как?
public function onKernelRequest(GetResponseEvent $event)
{
if (!$event->isMasterRequest()) {
return;
}
$request = $this->requestStack->getCurrentRequest();
$requestedWith = $request->headers->get('x-header-myfeature');
if (!empty($requestedWith)) {
$event->setResponse(new RedirectResponse($this->newUrltoRedirect));
}
}
Имейте в виду, что перенаправление работает, я просто хочу избежать запуска всех других прослушивателей и срабатывания, например. журнал сообщений там.
Я был бы не против применить еще более жестокие методы перенаправления на этом этапе, не заботясь о том, чтобы запускать дополнительный код.
Любые идеи?
P.S. : я попытался добавить
public function onKernelResponse(FilterResponseEvent $event)
{
$response = $event->getResponse();
if ($response instanceof RedirectResponse) {
$this->logger->notice(' We want to redirect');
$event->stopPropagation();
}
}
Но это не работает, так как я получаю простой объект Response, а не объект RedirectResponse.