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

Возможный дубликат:
Отправитель аутентификации HTTP через PHP

Здравствуй

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

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

Благодарю.

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

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

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

Следовательно, ответ на этот вопрос, вы не можете. Сожалею.

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

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

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

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

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

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

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