Я создаю REST-API, и в настоящее время Basic Auth определен как аутентификация.
Конфигурация брандмауэра Symfony:
secured_area:
pattern: ^/
anonymous: false
http_basic:
realm: "Secured Basic Auth Area"
Это приводит к правильному поведению, если я делаю запрос без проверки подлинности, я получаю правильный заголовок:
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="Secured Basic Auth Area"...
Но проблема сейчас в том, что если я делаю запрос через браузер, я всегда получаю всплывающее окно Basic Auth. Чтобы предотвратить это, я мог бы использовать unauthorized_challenge Конфигурация FOSRestBundle, чтобы изменить пользовательский вызов аутентификации. Это не меняет возвращаемый заголовок.
Конфиг для остальных пакетов:
fos_rest:
unauthorized_challenge: "xxxBasic realm=\"Foo Area\""access_denied_listener:
json: true
Версия FOSRestBundle — 1.4.2, версия Symfony — 2.3.18.
Любая идея, в чем может быть проблема, что параметр FOSRestBundle игнорируется?
Решил, проблема была:
У меня был kernel.request
слушатель, который выдавал исключение AuthenticationException, это, казалось, привело к проблеме, заключающейся в том, что дальнейшее распространение события не удалось, и слушатель RestBundle не был вызван должным образом.
Для полноты, после того, как это было исправлено, я столкнулся с другой проблемой, что ответ всегда содержал Исключение как вывод HTML. Чтобы решить эту проблему, мне также пришлось настроить контроллер исключений FOSRestBundle в конфигурации Twig.
Мой app / config.yml теперь выглядит так (для соответствующих частей):
twig:
debug: "%kernel.debug%"strict_variables: "%kernel.debug%"# Handle expections via the FOSRestBundle
exception_controller: 'FOS\RestBundle\Controller\ExceptionController::showAction'
fos_rest:
unauthorized_challenge: "xxxBasic realm=\"Foo Area\""access_denied_listener:
json: true
Других решений пока нет …