Как выйти из системы пользователь веб-сайта с помощью Стандартной аутентификации?

259
задан KyleMit 16 December 2016 в 08:36
поделиться

5 ответов

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

то, Что необходимо сделать, сделали, чтобы пользователь нажал на ссылку выхода из системы и отправил ‘401 Unauthorized’ в ответ, с помощью той же области и на том же уровне папки URL как нормальные 401, которые Вы отправляете запросу входа в систему.

Они должны быть предписаны ввести неправильные учетные данные затем, например, пустое имя-пользователя-и-пароль, и в ответ Вы передаете обратно “You, успешно зарегистрировали out” страницу. Неправильные/пустые учетные данные тогда перезапишут предыдущие корректные учетные данные.

Короче говоря, сценарий выхода из системы инвертирует логику сценария входа в систему, только возвращая страницу успеха, если пользователь не передача правильных учетных данных.

вопрос состоит в том, входят ли несколько любопытные “don't, Ваше password” поле пароля встретит приемлемость для пользователя. Менеджеры паролей, которые пытаются автозаполнить пароль, могут также помешать здесь.

Редактирование для добавления в ответ на комментарий: перевход в систему является немного отличающейся проблемой (если Вы не требуете двухступенчатого выхода из системы/входа в систему, очевидно). Необходимо отклонить (401) первая попытка получить доступ к ссылке перевхода в систему, чем принимают второе (который, по-видимому, имеет различное имя пользователя/пароль). Существует несколько способов, которыми Вы могли сделать это. Нужно было бы включать текущее имя пользователя в ссылку выхода из системы (например, перевход в систему/? имя пользователя), и отклонение, когда учетные данные соответствуют имени пользователя.

163
ответ дан bobince 23 November 2019 в 02:37
поделиться
  • используют идентификатор сессии (cookie)
  • , делают недействительным идентификатор сессии на сервере
  • , не принимают пользователей с недопустимыми идентификаторами сессии
0
ответ дан Tomalak 23 November 2019 в 02:37
поделиться

Это не непосредственно возможно со Стандартной аутентификацией.

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

существуют "взломы" (см. другие ответы), обычно включающий использование XMLHttpRequest для отправки Запрос HTTP с неправильными учетными данными для перезаписи тех первоначально предоставленных.

10
ответ дан Alnitak 23 November 2019 в 02:37
поделиться

Дополнение к ответу bobince...

С Ajax у Вас может быть своя ссылка/кнопка 'Выхода из системы', соединенная проводом к функции JavaScript. Имейте эту функцию, отправляют XMLHttpRequest с плохим именем пользователя и паролем. Это должно возвратить 401. Затем задержанный document.location к предварительной странице входа в систему. Таким образом, пользователь никогда не будет видеть дополнительное диалоговое окно входа в систему во время выхода из системы, ни иметь, чтобы не забыть вставлять плохие учетные данные.

193
ответ дан system PAUSE 23 November 2019 в 02:37
поделиться

Только для справки существует новый Заголовок Ответа 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

0
ответ дан 23 November 2019 в 02:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: