Стандартная аутентификация не была разработана для управления выходить из системы. Можно сделать это, но не полностью автоматически.
то, Что необходимо сделать, сделали, чтобы пользователь нажал на ссылку выхода из системы и отправил вЂ401 Unauthorized’ в ответ, с помощью той же области и на том же уровне папки URL как нормальные 401, которые Вы отправляете запросу входа в систему.
Они должны быть предписаны ввести неправильные учетные данные затем, например, пустое имя-пользователя-и-пароль, и в ответ Вы передаете обратно “You, успешно зарегистрировали out” страницу. Неправильные/пустые учетные данные тогда перезапишут предыдущие корректные учетные данные.
Короче говоря, сценарий выхода из системы инвертирует логику сценария входа в систему, только возвращая страницу успеха, если пользователь не передача правильных учетных данных.
вопрос состоит в том, входят ли несколько любопытные “don't, Ваше password” поле пароля встретит приемлемость для пользователя. Менеджеры паролей, которые пытаются автозаполнить пароль, могут также помешать здесь.
Редактирование для добавления в ответ на комментарий: перевход в систему является немного отличающейся проблемой (если Вы не требуете двухступенчатого выхода из системы/входа в систему, очевидно). Необходимо отклонить (401) первая попытка получить доступ к ссылке перевхода в систему, чем принимают второе (который, по-видимому, имеет различное имя пользователя/пароль). Существует несколько способов, которыми Вы могли сделать это. Нужно было бы включать текущее имя пользователя в ссылку выхода из системы (например, перевход в систему/? имя пользователя), и отклонение, когда учетные данные соответствуют имени пользователя.
Это не непосредственно возможно со Стандартной аутентификацией.
нет никакого механизма в Спецификации HTTP для сервера, чтобы сказать браузеру прекращать отправлять учетные данные, которые уже представил пользователь.
существуют "взломы" (см. другие ответы), обычно включающий использование XMLHttpRequest для отправки Запрос HTTP с неправильными учетными данными для перезаписи тех первоначально предоставленных.
Дополнение к ответу bobince...
С Ajax у Вас может быть своя ссылка/кнопка 'Выхода из системы', соединенная проводом к функции JavaScript. Имейте эту функцию, отправляют XMLHttpRequest с плохим именем пользователя и паролем. Это должно возвратить 401. Затем задержанный document.location к предварительной странице входа в систему. Таким образом, пользователь никогда не будет видеть дополнительное диалоговое окно входа в систему во время выхода из системы, ни иметь, чтобы не забыть вставлять плохие учетные данные.
Только для справки существует новый Заголовок Ответа HTTP, названный Clear-Site-Data
. Если Ваш ответ сервера включает Clear-Site-Data: "cookies"
заголовок, то учетные данные аутентификации (не только cookie) должны быть удалены. Я протестировал его на Chrome 77, но этом предупреждении шоу на консоли:
Clear-Site-Data header on 'https://localhost:9443/clear': Cleared data types:
"cookies". Clearing channel IDs and HTTP authentication cache is currently not
supported, as it breaks active network connections.
И подлинные учетные данные не удалены, таким образом, это не делает работ (на данный момент) для реализации основных подлинных выходов из системы, но возможно в будущем будет. Не протестировал на других браузерах.
Ссылки:
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Clear-Site-Data
https://www.w3.org/TR/clear-site-data /
https://github.com/w3c/webappsec-clear-site-data
https://caniuse.com/#feat=mdn-http_headers_clear-site-data_cookies