Как выйти из системы при использовании аутентификации .htaccess (и .htpasswd)?[дубликат]

StackOverflow https://stackoverflow.com/questions/1163868

Вопрос

Возможный Дубликат:
HTTP-аутентификация выход из системы через PHP

Привет

У меня есть некоторая функциональность на моем веб-сайте, защищенная с помощью .htaccess и .htpasswd.Когда пользователи пытаются получить к нему доступ, они получают запрос на ввод сведений.Они вводят свои данные, заходят внутрь и могут просматривать материалы и т.д.Все работает нормально.

Мой вопрос заключается в том, как мне создать logout функциональность для этого типа аутентификации.Я знаю, что они могут закрыть окно браузера для "Выхода из системы".Но это не идеально.Что бы вы мне посоветовали?

Спасибо.

Это было полезно?

Решение

Браузеры обычно не поддерживают это, см. Как мне выйти из системы?

С тех пор, как браузеры впервые начали использовать базовую аутентификацию, администраторы веб-сайтов хотели знать, как разрешить пользователю выйти из системы.Поскольку браузер кэширует имя пользователя и пароль вместе с областью аутентификации , как описано ранее в этом руководстве, это не зависит от конфигурации сервера, а является вопрос о том, как заставить браузер забыть учетные данные, так что при следующем запросе ресурса имя пользователя и пароль должны быть предоставлены снова.Существует множество ситуаций, в которых это желательно, например, при использовании браузера в общественном месте и нежелании оставлять браузер авторизованным , чтобы следующий пользователь мог получить доступ к вашему банковскому счету.

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

Следовательно, ответ на этот вопрос таков: вы не можете.Извините.

Существуют расширения браузера, которые позволяют вам отключить HTTP-аутентификацию для сайта.Для Firefox Веб-разработчик расширение (которое в любом случае является одним из моих любимых расширений) предлагает эту функцию.Меню для этого таково Miscellaneous/Clear Private Data/HTTP Authentication.

Другие советы

Проверено на Firefox и Chrome..Что вы можете сделать, это отправить пользователя на http://выход:logout@example.com.Это заменит их текущее имя пользователя/пароль на выход/выход из системы (это может быть любая неверная комбинация пользователя/пароля), и поскольку теперь у них неправильное имя пользователя/пароль, им придется снова войти в систему, чтобы получить доступ к сайту.

В опере это не работает, потому что у вас может быть одновременно несколько логинов/паролей.В IE это тоже не сработало, потому что IE, похоже, не поддерживает http://имя пользователя:пароль@example.com URL-адреса.

Я столкнулся с этой проблемой несколько лет назад.Невероятно неприятно обнаружить, что существует проблема, с которой сталкиваются все, и никто, похоже, не хочет решать ее в общем.

Как отмечено в Неадекватная функция выхода из системы при HTTP-аутентификации. Я думаю, что ответ состоит в том, чтобы изменить RFC, чтобы разрешить тайм-ауты и поддержать кнопку выхода из системы.Дополнительное предложение автора о том, чтобы сервер мог отправлять заголовок «выход из системы», фактически устранило бы необходимость в любой поддержка клиентского пользовательского агента, поскольку веб-сайты могут просто включать ссылку на веб-страницу на URL-адрес, который возвращает необходимый код ответа и/или заголовок для аннулирования текущего сеанса.

Выйти из системы можно.Вам следует реализовать страницу выхода из системы, которая будет возвращать HTTP 401 до тех пор, пока пользователь не введет НЕВЕРНЫЕ данные для входа, а затем перенаправит куда-нибудь еще.Браузер запоминает последнюю принятую информацию для входа и, следовательно, отменяет правильный вход.

Но это бесполезно, потому что требует сотрудничества пользователя.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top