Поглядите, плиз, под разными браузерами...

Фанат, опубликую вечером. Кстати в 7.2 такого уже нет. Если память мне не изменяет, то где-то на Xpoint обсуждалась проблема Realm в сочетании с логин-пассворд для разных зон одного и того же хоста. Не тот ли это случай...

-~{}~ 24.01.05 19:05:

Прощу прощения за тормоза. Итак, бага в логах выглядит следующим образом: Нетскейп 7.02 действительно не переспрашивает логин-пароль, если авторизация прошла, но была еще раз запрошена. Переспрашивает только если выдать другой реалм. Если в этом случае ввести новые логин-пароль он их пошлет. Но при следующем запросе он всё равно высылает прежнюю (первую) пару даже после того, как были введены другие логин и пароль. Тестировал при отключенном в настройках пассворд манагере.
 
ага, ну, добавить реалм, пжалуй, проблемы не составит.
все равно в базу писать.
хорошая идея, кстати
 
Написал подобный скрипт, всё работает за одним исключением... Не могу понять, как сделать логаут? Т.е. как очистить кеш аутентификации без повторного появления диалогового окна (как сделано у Фаната)?
 
у фаната никакой кэш не очищается, естественно.
Собственно, и появление диалогового окна тоже ничего не очищает.
 
sage

В этом и закопана собака... Похоже Фанат не скажет, разве что кто-то другой анализируя HTTP траффик с его скриптом сам догадается.
 
alexhemp, пёсика прикопали в поиске по форуму... Недалеко, согласись. кейворды - logout, 401
 
ну как-то поиск мне не помог, хотя может я и вправду тупой...

собственно там 3 метода описаны.

1. Не пускать того-же юзера заново - передавая его имя параметром
2. Менять realm
3. Передавать "другие" логин-пароль - но боюсь это в IE6SP2 работать точно не будет, там убили HTTP авторизацию в URL.

Мне эта фишка особо не нужна, но было бы прикольно иметь файлик logout.php для "очистки" HTTP авторизации...
 
Зачем браузер? Ты-же сделал, значит сделать можно. :-) Кому надо значит сможет разобраться.
 
я?!
очистил?
кэш?
ты гонишь

-~{}~ 25.01.05 15:04:

я всегда утверждал, то это невозможно.
 
Кому надо значит сможет разобраться.
так чо ты тут бодягу развёл, раз не надо? А если надо — возьми снифер и посмотри как это делается.

В догонку: "очистить HTTP авторизацию" невозможно. Можно переспросить.
 
inTox
Выбирай выражения плиз. Я просто человеку ответил, Фанат подколол. У вас тут постоянный переход на личности... Спокойнее надо быть.

-~{}~ 26.01.05 20:12:

Фанат
Посмотел на досуге лог HTTP обмена.

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

Теперь нужно понять, как отличить посылали ли мы уже "лишний" 401 при правльном поле Authorization.

Сессий не наблюдается, но наблюдается какой-то счетчик. Может ты в базу IP пишешь? ;-)
 
мой браузер ничего не очищает.
а просто действует строго по стандарту - если получил 401, то выкидывает коно для ввода пароля.
Теперь нужно понять, как отличить посылали ли мы уже "лишний" 401 при правльном поле Authorization.
совершенно верно.
Может ты в базу IP пишешь? ;-)
не надо ,пожалуйста, обо мне думать так плохо.
 
хе-хе. по моему тут все очевидно :)
читайте rfc господа
 
Фанат

а просто действует строго по стандарту - если получил 401, то выкидывает коно для ввода пароля.
Ну это я и хотел сказать... показывает окно еще раз, но без пароля...

На досуге дальше подумаю. У меня собственно релогин так-же сделан, как в phpMyAdmin - т.е. с тем-же логином не пускает :-)

не надо ,пожалуйста, обо мне думать так плохо.
Я пошутил :-) Ясен пень, это не решение...Тем не менее я не понял, как ты отличаешь состояния login-logout без кук, сессий и тому подобного. Ведь Authorization поле в запросе никуда не девается..., а все остальные поля - стандартные...

Ладно, на досуге еще покопаюсь, реверс-инжиниринг - забавная штука :-)
 
ну да, я потом уже увидел, что речь идет о пароле.
а то я привык что кэш стирается . и опять про него подумал.

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

если не освободиться, то тебе проще будет самому сделать, чем реверсинжинирить моё
 
Фанат

Еще поглядел вечером на HTTP лог, вот что увидел.

Чтобы ответить уже авторизованному клиенту 401 нужно определить что он пытается логинится именно в первый раз.

Это состояние нужно где-то хранить, причем на сервере.
Похоже на то, что ты выдаешь каждой попытке логина идентификатор и потом хранишь где-то (файл, БД и т.п.) состояние.

?login редиректит на ?login=xxx
первый запрос с xxx получает всегда 401
второй запрос с xxx и правильным Authorization редиректит на content.php

Вывод - где-то между ними хранится состояние.
 
Сверху