우선 순위가 가장 높은 리스너를 구현했습니다. 헤더 값에 따라 사용자가 내 서버에서 리디렉션됩니다.리디렉션에서 모든 onKernelResponse를 실행하는 것을 리디렉션하고 방지하는 방법은 무엇입니까?
많은 사용자에게 영향을주기 때문에 다른 모든 수신기가 실행되기 전에 리디렉션을 실행하고 싶습니다. 특히 해당 수신기의 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. : 나는
public function onKernelResponse(FilterResponseEvent $event)
{
$response = $event->getResponse();
if ($response instanceof RedirectResponse) {
$this->logger->notice(' We want to redirect');
$event->stopPropagation();
}
}
를 추가하는 시도하지만 일반 응답 객체가 아닌 RedirectResponse 개체를 얻을 수 있기 때문에 작동하지 않습니다.