HTTP-аутентификация. Как сделать так, чтобы пользователь перезаписывал данные аутентификации? - PullRequest
0 голосов
/ 05 июля 2010

Я знаю, что не могу выйти из системы с помощью аутентификации HTTP.

Кажется, что перезапись с помощью способа Location: http://logout:byebye@yourserver.example.com/ работает в большинстве браузеров, кроме IE.пусть пользователи перезаписывают данные аутентификации.

Допустим, у пользователя есть некоторые данные аутентификации в браузере, теперь они переходят на страницу my / logout и отправляют обратно заголовки 401, чтобы всплыло окно аутентификации иони могут перезаписать это.

Однако , когда они нажимают OK (данные аутентификации теперь перезаписываются в браузере), страница / logout перезагружается, и я не могу проверить новуюданные, потому что страница перезагрузится после того, как я нажму OK, и она снова запустит заголовки Auth и снова покажет всплывающее окно.

В общем, как мне проверить данные аутентификации HTTP, если в браузере уже есть данные?

1 Ответ

1 голос
/ 05 июля 2010

когда они нажимают OK (данные аутентификации теперь перезаписываются в браузере), страница / logout перезагружается, и я не могу проверить новые данные

Вам просто нужно выполнить обратную проверку представленных данных: если пользователь предоставил правильную аутентификацию, верните ответ 401; если пользователь указывает неверный аутентификатор или нет аутентификации, верните 200 или 302, чтобы указать, что новый неверный / нет аутентификации принят. Затем браузер продолжит использовать неверный / нет аутентификации для будущих запросов.

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

(Это легко, если вы сами выплевываете заголовки аутентификации из скрипта; обычно это невозможно, если вы используете функции обработки аутентификации вашего веб-сервера.)

...