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

deonis

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

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

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

Barlone

Guest
Нельзя из PHP никак иначе воздействовать на браузер, кроме как снова послав ответ с кодом 401. Посмотрите в rambler top 100 на ссылку "войти под другим именем". Способ выглядит коряво, но ничего другого сделать невозможно.
 

deonis

Новичок
Фигня вот какая
Допустим есть страница на которую чтобы попасть надо авторизироваться.

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

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

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

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

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

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

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

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


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

У меня есть некоторое решение, но оно "через пень колоду"
 

sokov

Guest
Авторизованный броузер просто посылает куку. Ну так и прибей её соответствующим заголовком!!!
 

deonis

Новичок
точ то он посылает куку это ясно.

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

а админы почему то молчат :(((
 

tony2001

TeaM PHPClub
зачем использовать все в одной куче ?
используй сессии и _свою_ проверку паролей, а не сессии + 401.
 

deonis

Новичок
свою я тоже использую +
но хочу чтоб был и вариант с 401

Пользователи ж разные бывают :)
 

tony2001

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

sokov

Guest
Re: HTTP авторизация

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

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

Или же проблема в другом..?
 

deonis

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

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

А к авторизации я добрался как раз в самом конце :D :D :D.
 

ForJest

- свежая кровь
tony молодец. Пойду ка я и свою авторизацию сделаю наконец-то нормально :)
 

tony2001

TeaM PHPClub
не вешайте на меня чужие лавры - это Ромика мысль была.
я только "пересказчик".
 
Сверху