HTTP авторизация

  • Автор темы Автор темы deonis
  • Дата начала Дата начала

deonis

Новичок
HTTP авторизация

После того как браузер получил ответ от сервера с кодом 401, он выводит всем известное окошко с просьбой ввести логин и пароль. После этого он при следующих запросах к этой папке и ко всем дочерним папкам в заголовок пихает эти данные.

Можно ли запретить ему это делать? Например послать какой-нить хидер, после которого браузер "успокоится".
 
Нельзя из PHP никак иначе воздействовать на браузер, кроме как снова послав ответ с кодом 401. Посмотрите в rambler top 100 на ссылку "войти под другим именем". Способ выглядит коряво, но ничего другого сделать невозможно.
 
Фигня вот какая
Допустим есть страница на которую чтобы попасть надо авторизироваться.

Авторизация проходит с помощью выдачи пользователю 401 ответа на его запрос. После удачного авторизирования регистрируется сессия и все пучком.

Человек, к примеру, авторизировался, поработал и хочет выйти - нажимает на выход. Пусть выход это ссылка, где ему специально подставляются левые логин и пароль:

http://login:pass@host/index.php?action=logout

После нажатия прибивается сессия.

После этого если пользователь опять пытается зайти на страницу с авторизацие, то

- браузер все равно посылает логин и пароль которые были доэтого
- так как сессии нет, то воводится запрос на авторизацию

НО!!!!
если пользователь нажмет "cancel" браузер сначала покажет страницу, что мол авторизация не получилась.
После чего если нажать "refresh", то браузер пошлет старый логин и старый пароль, а скрипт как ни в чем не бывало авторизирует пользователя.

Тобишь повторная авторизация пройдет не так как надо. :( :( :(


Если я в чем то неправ, то пишите,
если я прав то плиз подскажите как это победить.

У меня есть некоторое решение, но оно "через пень колоду"
 
Авторизованный броузер просто посылает куку. Ну так и прибей её соответствующим заголовком!!!
 
точ то он посылает куку это ясно.

он посылает хидер с логином и паролем на доступ к странице
вот его и надо запретить, но наверно это нельзя сделать,

а админы почему то молчат :(((
 
зачем использовать все в одной куче ?
используй сессии и _свою_ проверку паролей, а не сессии + 401.
 
свою я тоже использую +
но хочу чтоб был и вариант с 401

Пользователи ж разные бывают :)
 
хинт:
если уж делать так, то меняй все время Realm.
пароль действителен только для одного Realm, и если после такого "логаута" спрашивать пароль в другом Реалме, то все будет ок.
У Ромика были более глобальные мысли по этому поводу, он может более подробно рассказать, я плохо эту тему помню.
 
Re: HTTP авторизация

Можно ли запретить ему это делать? Например послать какой-нить хидер, после которого браузер "успокоится".
Короче, ты хочешь сделать Logout, если я правильно понял...

Для этого надо сказать броузеру, чтобы он перестал пихать куки авторизации. Почитай в доках по php, как прибить куку - кажется надо посадить такую же с пустым значением и время скрутить назад.

Или же проблема в другом..?
 
Автор оригинала: tony2001
если уж делать так, то меняй все время Realm.
пароль действителен только для одного Realm, и если после такого "логаута" спрашивать пароль в другом Реалме, то все будет ок.
Ты просто гений :D :D :D

Я читал ХТТП спецификацию, но чем ДОЛШЕ читаеешь, тем меньше уже воспринимаешь.

А к авторизации я добрался как раз в самом конце :D :D :D.
 
tony молодец. Пойду ка я и свою авторизацию сделаю наконец-то нормально :)
 
не вешайте на меня чужие лавры - это Ромика мысль была.
я только "пересказчик".
 
Сверху