Подтвердить что ты не робот

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

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

Привет

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

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

Спасибо.

4b9b3361

Ответ 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-адрес, который возвращает необходимый код ответа и/или заголовок, чтобы аннулировать текущий сеанс.