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

inTox

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

-~{}~ 24.01.05 19:05:

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

Фанат

oncle terrible
Команда форума
ага, ну, добавить реалм, пжалуй, проблемы не составит.
все равно в базу писать.
хорошая идея, кстати
 

sage

Новичок
Написал подобный скрипт, всё работает за одним исключением... Не могу понять, как сделать логаут? Т.е. как очистить кеш аутентификации без повторного появления диалогового окна (как сделано у Фаната)?
 

Фанат

oncle terrible
Команда форума
у фаната никакой кэш не очищается, естественно.
Собственно, и появление диалогового окна тоже ничего не очищает.
 

alexhemp

Новичок
sage

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

inTox

вёбных дел мастер
alexhemp, пёсика прикопали в поиске по форуму... Недалеко, согласись. кейворды - logout, 401
 

alexhemp

Новичок
ну как-то поиск мне не помог, хотя может я и вправду тупой...

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

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

Мне эта фишка особо не нужна, но было бы прикольно иметь файлик logout.php для "очистки" HTTP авторизации...
 

alexhemp

Новичок
Зачем браузер? Ты-же сделал, значит сделать можно. :) Кому надо значит сможет разобраться.
 

Фанат

oncle terrible
Команда форума
я?!
очистил?
кэш?
ты гонишь

-~{}~ 25.01.05 15:04:

я всегда утверждал, то это невозможно.
 

inTox

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

В догонку: "очистить HTTP авторизацию" невозможно. Можно переспросить.
 

alexhemp

Новичок
inTox
Выбирай выражения плиз. Я просто человеку ответил, Фанат подколол. У вас тут постоянный переход на личности... Спокойнее надо быть.

-~{}~ 26.01.05 20:12:

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

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

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

Сессий не наблюдается, но наблюдается какой-то счетчик. Может ты в базу IP пишешь? ;-)
 

Фанат

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

fixxxer

К.О.
Партнер клуба
хе-хе. по моему тут все очевидно :)
читайте rfc господа
 

alexhemp

Новичок
Фанат

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

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

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

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

Фанат

oncle terrible
Команда форума
ну да, я потом уже увидел, что речь идет о пароле.
а то я привык что кэш стирается . и опять про него подумал.

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

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

alexhemp

Новичок
Фанат

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

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

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

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

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