Как заставить SF2/FOSUserBundle повторно запрашивать пароль у пользователя при определенных действиях?


У меня есть эта защищенная административная область под /admin/. Пользователи должны войти в систему с помощью HTTP basic auth (http_basic установите значение true в security.yml).

Моя цель состоит в том, чтобы для конкретного действия в конкретном контроллере повторно запросить у пользователя его имя пользователя/пароль. Я думал, что это будет просто, но, согласно моим исследованиям, похоже, что это не так.

Я пытался unset как $_SERVER['PHP_AUTH_USER'], так и $_SERVER['PHP_AUTH_PW'], но, похоже, это не возымело никакого эффекта. Я также попытался изменить header, чтобы установить код состояния 401, но это не повлияло либо.

Как это может быть достижимо?

Author: D4V1D, 2015-03-24

1 answers

Прежде всего, базовая аутентификация HTTP НЕ была разработана для поддержки выхода из системы.

Это означает, что вы можете не гарантировать это в каждом браузере; даже с помощью трюка 401 или с перенаправлением [email protected] чтобы аннулировать учетные данные.

Смотрите этот ответ.

Так что это плохая привычка использовать его, когда вам нужно выйти из системы вашего пользователя.


Вы должны использовать пользовательскую аутентификацию, предоставляемую FOSUserBundle если вы хотите повторно запросить учетные данные пользователя. И это довольно просто и безопасно.

 0
Author: RSez, 2017-05-23 11:53:59