Как выйти из системы при использовании аутентификации .htaccess(и .htpasswd)?
Возможный дубликат:
Отправитель аутентификации HTTP через PHP
Привет
У меня есть некоторые функции на моем сайте, защищенные с помощью .htaccess
и .htpasswd
.
Когда пользователи пытаются получить к нему доступ, они получают приглашение ввести данные. Они вводят свои детали и входят и могут видеть вещи и т.д. Все работает нормально.
Мой вопрос заключается в том, как создать функцию logout
для этого типа проверки подлинности. Я знаю, что они могут закрыть окно браузера "Выход". Но это не идеально. Что бы вы мне посоветовали?
Спасибо.
Ответы
Ответ 1
Браузеры обычно не поддерживают это, см. Как выйти из системы?
Так как браузеры впервые начали внедрение базовой аутентификации, администраторы веб-сайта хотели знать, как разрешить пользователю выйти из системы. Поскольку браузер кэширует имя пользователя и пароль с аутентификацией, как описано выше в этом Это не функция конфигурации сервера, но вопрос о том, как заставить браузер забыть учетную информацию, поэтому что в следующий раз запрошено, имя пользователя и пароль должен быть поставлен снова. Есть многочисленные ситуации, в которых это желательно, например, при использовании браузера в общедоступном месте, а не желая оставить браузер включенным в журнал в, так что следующий человек может получить на ваш банковский счет.
Однако, хотя это, возможно, наиболее часто задаваемый вопрос о базовой аутентификации, до сих пор ни одна из основные производители браузеров видел это как желательную особенность вкладывать в свои продукты.
Следовательно, ответ на этот вопрос вопрос есть, вы не можете. К сожалению.
Существуют расширения браузера, которые позволяют очищать HTTP-аутентификацию для сайта.
Для Firefox расширение
Ответ 2
Проверено на firefox и chrome. Что вы можете сделать, это отправить пользователю http://logout:[email protected]. Это заменит их текущее имя пользователя/пароль на logout/logout (это может быть любая недопустимая комбинация пользователя/пароля), и поскольку у них теперь есть неправильное имя пользователя/пароль, им придется снова войти в систему для доступа к сайту.
В Opera это не работает, потому что вы можете одновременно иметь несколько имен пользователей/паролей. Он также не работал на IE, потому что IE не поддерживает http://username:[email protected] URL.
Ответ 3
Это можно выйти из системы. Вы должны реализовать страницу выхода из системы, которая вернет HTTP 401, пока пользователь не войдет в логическую информацию BAD, а затем перенаправит куда-нибудь еще. Браузер запоминает последнюю принятую регистрационную информацию и, следовательно, переопределяет правильный логин.
Но это непригодно, потому что ему нужно сотрудничество с пользователем.
Ответ 4
Я столкнулся с этим вопросом несколько лет назад. Это невероятно сложно обнаружить, что есть проблема, которую все испытывают, и никто, кажется, не хочет решать в общем виде.
Как отмечено в Неадекватная функция выхода из HTTP-аутентификации Я думаю, что ответ заключается в изменении RFC, чтобы разрешить тайм-ауты и поддерживать кнопку выхода из системы, Дополнительное предложение автора о том, что сервер сможет отправить заголовок "выход из системы", фактически устранит необходимость в поддержке любого клиентского агента клиента, поскольку веб-сайты могут просто включать ссылку на веб-страницу в URL-адрес, который возвращает необходимый код ответа и/или заголовок, чтобы аннулировать текущий сеанс.