Я следую инструкциям " Как проверить подлинность пользователей с помощью API-интерфейсов".
Когда я даю правильный ключ API, все работает хорошо. С другой стороны, когда ключ API является либо неправильным, либо отсутствующим, код должен генерировать исключение (например, исключение BadCredentialsException в первом случае). Однако это исключение, по-видимому, переоценивается, а окончательный запрос - это AuthenticationCredentialsNotFoundException, созданный Symfony AccessListener.php. Я получаю ошибку:
A Token was not found in the SecurityContext.
Это позволяет мне думать, что исключение, заброшенное в PreAuthenticator, каким-то образом отбрасывается, и меканизм безопасности только жалуется на еще один шаг, что он не может найти токена (что действительно является нормальным с учетом неверного ключа API).
Если это ожидаемое поведение (которое я нашел печальным), нет смысла предлагать PreAuthenticator, который использует исключения в документе...
Чтобы решить эту проблему, я создаю собственный поставщик аутентификации, и он отлично работает!
учебник: http://symfony.com/doc/current/cookbook/security/custom_authentication_provider.html