исключить аутентификацию аутентификации с помощью symfony2

Я хотел бы просто вернуть подходящее сообщение, например, return new Response('authentication faild'); для моего клиента через API, но он не ведет себя так, как предполагается, как в следующем коде

 try{ $token = $this->get('security.authentication.manager') ->authenticate(new UsernamePasswordToken($username, $password, 'main')); $this->get('security.context')->setToken($token); } catch (BadCredentialsException $e){ return new Response('authentication faild', 403); } 

Обнаружена ошибка: код html / css … формы входа в систему

Посмотри на это:

 <?php namespace YourBundle\EventListener; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent; class CatchErrorsEventSubscriber implements EventSubscriberInterface { public static function getSubscribedEvents() { return ["kernel.exception" => ['catchException', 200]]; } /** * @param GetResponseForExceptionEvent $evt */ public function catchException(GetResponseForExceptionEvent $evt) { $request = $evt->getRequest()->getRequestFormat('json'); if($request != 'json') { return; } $response = $evt->getResponse() ?: new Response(); $evt->stopPropagation(); // stop the other listener to redirect to login $evt->setResponse($response); } } 

Этот слушатель поймает исключение, и вы можете отправить ответ по вашему желанию. В этом примере только если запрос является json-запросом.

Не забудьте зарегистрировать подписчика как услугу:

  <service class="YourBundle\EventListener\CatchErrorsEventSubscriber" id="your_bundle.catch_error_event_subscriber"> <tag name="kernel.event_subscriber"/> </service>