Ваш метод контроллера перенаправляет вызов Ajax на страницу входа в систему, потому что ваш JS не отправляет учетные данные (читай: куки).
Если вы используете fetch, используйте credentials
:
fetch(url, {
credentials: "same-origin"
}).then(...).catch(...);
См. https://developer.mozilla.org/en-US/docs/Web/API/Request/credentials
Если вы используете другой способ создания вызова Ajax, обновите ваш вопрос с помощью некоторого кода JS и дайте мне знать:).
Если вы не хотите перенаправлять пользователя на страницу входа при выполнении XMLHttpRequest ('ajax'), используйте этот прослушиватель для отправки ответа 403:
class AjaxAuthenticationListener implements EventSubscriberInterface
{
public static function getSubscribedEvents()
{
return [
KernelEvents::EXCEPTION => [
['onCoreException', 10],
],
];
}
public function onCoreException(GetResponseForExceptionEvent $event)
{
$exception = $event->getException();
$request = $event->getRequest();
if (! $request->isXmlHttpRequest()) {
return;
}
if (! ($exception instanceof AuthenticationException) && ! ($exception instanceof AccessDeniedException)) {
return;
}
$event->setResponse(new Response('No access', 403));
}
}