Я использую FOSRestBundle для моего REST API, и до сих пор это был отличный инструмент. Я использую HTTP Basic Auth, и в большинстве случаев он работает отлично. Тем не менее, у меня возникают проблемы с поведением исключения пакета, когда отправляются плохие учетные данные. При обработке исключений (через встроенные обработчик аутентификации или конфигурацию отображения исключения), расслоение всегда дает мне ответ с правильным статусом HTTP и JSON/содержимым XML, подобным следующим:FOSRestBundle: возвращает метаданные JSON/XML для исключения «Bad Credentials»
{
"code": 401,
"message": "You are not authenticated"
}
Это хорошо, это также работает, когда нет аутентификации информация предоставляется вообще. Однако при отправке плохих учетных данных (например, неизвестное имя пользователя или неверный пароль) Я получаю код HTTP 401 Плохие учетные данные (это нормально) с пустым телом сообщения. Вместо этого я ожидал нечто подобное JSON выше.
Это ошибка или проблема с конфигурацией на моей стороне? Мне также было бы интересно узнать, как именно эти ошибки аутентификации обрабатываются пакетом, поскольку переопределение кода состояния BadCredentialsException
в разделе codes
раздела конфигурации исключений пакета, похоже, игнорируется.
Спасибо!
Спасибо за быстрый ответ! К сожалению, 'AccessDeniedListener' даже не кажется вызванным в случае« плохих учетных данных ». Мой пользовательский 'AccessDeniedListener' вызывается в случае« no authentication at all ». Однако, если я добавлю путь 'else' (который должен улавливать все другие исключения) в [Line 74] (https://github.com/FriendsOfSymfony/FOSRestBundle/blob/master/EventListener/AccessDeniedListener.php# L74) и вернуть некоторое произвольное 'HttpException', я все равно получаю' 401 Bad Credentials' в случае неправильной PW. Есть идеи?Может быть, у какого-то другого слушателя есть более высокий prio? – MichaelB
вы можете найти других слушателей/подписчиков, используя 'app/console container: debug --tag = kernel.event_listener --show-private' - см. [** мой ответ здесь **] (http://stackoverflow.com/ вопросы/16688519/как к отладочных-тэгов-и-сервисов, сконфигурированных-в-Symfony2-сервис-контейнера). – nifr
Я искал это при отладке, спасибо! К счастью, я нашел проблему, связанную с прослушивателем HTTP Basic Basic Authentication для Symfony (см. Мой ответ). – MichaelB