Автор Тема: HTTP401 logoff  (Прочитано 8624 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
HTTP401 logoff
« Ответ #15 : 21 Апреля 2004, 16:36:10 »
Цитировать
CGVictor:
Ерунду говорить не надо.

нет уж, давай разбернемся, родной :-)
Итак, как ты объясняешь вот эту свою фразу:
Цитировать
CGVictor:
а если уничтожать сессию, то при обращении к скрипту авторизации браузер снова передает $PHP_AUTH_USER и PW.

Какая связь между сессией и нттр авторизацией?
С какой это радости браузер сразу кидается передавать $PHP_AUTH_USER после того, как ты уничтожаешь сессию?
Как ты объясняешь данное поведение браузера.
Окей, я сказал ерунду.
Жду твоего пояснения.

Цитировать
CGVictor:
А мне, похоже, придется делать отдельную страничку с формой.

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

Оффлайн CGVictor

  • теперь местный
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2511
  • +0/-0
  • 2
    • Просмотр профиля
    • http://cg.net.ru
HTTP401 logoff
« Ответ #16 : 22 Апреля 2004, 10:20:33 »
Цитировать
RomikChef:
Так что давай разбираться.
На будущее пригодится.

Абсолютно согласен.

Итак:

Цитировать
RomikChef:
С какой это радости браузер сразу кидается передавать $PHP_AUTH_USER после того, как ты уничтожаешь сессию?

Когда я уничтожаю сессию (с флагом авторизации), то мой код вполне справедливо считает пользователя неавторизованным. Потому что так оно и есть.

Когда к моему скрипту обращается пользователь, для которого нет открытой сессии - скрипт выдает "401", неавторизован.

И вот здесь - ключевой момент. Допустим, пользователь зашел один раз. Ввел входные данные. Вышел. Сессия для него уничтожается, пользователь (для простоты работы) перекидывается на главную страницу сайта и т.д.

При повторном обращении к скрипту с авторизацией скрипт выдает браузеру "401", чтобы пользователь указал входные данные снова.
А браузер, ориентируясь что "здесь уже была авторизация", снова передает скрипту те данные, которые он(пользователь) вводил в первый раз. Причем у пользователя ничего не спрашивает.

Вот. А мне нужно, чтобы при повторном обращении браузер снова запросил логин-пасс (т.к. пользователь может быть другой!).
LJ: Backslashed life (rss)

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
HTTP401 logoff
« Ответ #17 : 22 Апреля 2004, 10:47:06 »
гуглуем.
Вторая ссылка на $PHP_AUTH_USER
http://ru.php.net/session_destroy
комментарий 3.
Оно?
AS IS...

Оффлайн CGVictor

  • теперь местный
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2511
  • +0/-0
  • 2
    • Просмотр профиля
    • http://cg.net.ru
HTTP401 logoff
« Ответ #18 : 22 Апреля 2004, 11:18:31 »
Цитировать
ThE0ReTiC:
http://ru.php.net/session_destroy комментарий 3.
Оно?

Не оно. У меня немножко по другому, да и не в этом суть.
Проблема все равно остается.

[off]* Начинаю думать: а может, это проблема браузера? Слишком всё неправильно получается[/off]
LJ: Backslashed life (rss)

Оффлайн FreeSpace

  • Штатный лодырь
  • Ветеран
  • *****
  • Сообщений: 613
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.infinity.com.ua
HTTP401 logoff
« Ответ #19 : 22 Апреля 2004, 19:33:23 »
CGVictor
Это проблема не браузера, а твоего непонимания механизма работы Basic-аутентификации.
Ты должен чётко понять, что механизм аутентификации и сессии - это два абсолютно разных понятия. Они между собой никак не связаны и работают независимо друго от друга.
Если ты поймешь это, то для тебя станет очевидным, что проблема у тебя не с сессиями, а именно с аутентификацией.
Мануал (а наверняка и спецификация HTTP, но я не проверял) говорит, что однажды получив от пользователя верную связку username / password, браузер запоминает её, а затем передает в каждом следующем запросе к этому же серверу (на самом деле, если не ошибаюсь, там есть заморочки с реалмами, но я не хочу ещё больше усложнять проблему). Тебе же нужно сделать так, чтобы при логауте и уничтожении сессии, так же сбрасывалось имя пользователя и пароль, которые используются для HTTP-авторизации и хранятся в памяти браузера.
Так вот, вся проблема в том, что на PHP это реализовать нельзя.
Я тебе уже приводил цитату из мануала, как можно попытаться это реализовать. Если этот способ не сработал, то никаких других вариантов не отсается. Браузер будет хранить имя пользователя и пароль у себя до тех пор, пока ты его не перезапустишь. Во многих браузерах, например в Мозилле, есть опция Log Out, которая очищает имя пользователя и пароль без перезапуска браузера. Но выбрать эту опцию может только пользователь, PHP тут не при делах.

Лично моё мнение, многие могут не согласится, но всё же:
Я вообще не вижу смысла использовать Basic-аутентификацию в PHP.
Если тебе нравится стандартное браузеровское окошко - используй .htaccess/.htpasswd. Если ты хочешь сам нарисовать страницу ввода пароля и обеспечить нормальную возможность выхода пользователей, используй авторизацию на куках/сессии.
Программирование - это единственное искусство, которое способно воплотить столь уникальное сочетание эстетики и функциональности.

Оффлайн CGVictor

  • теперь местный
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2511
  • +0/-0
  • 2
    • Просмотр профиля
    • http://cg.net.ru
HTTP401 logoff
« Ответ #20 : 24 Апреля 2004, 18:23:17 »
FreeSpace
Цитировать
FreeSpace:
Ты должен чётко понять, что механизм аутентификации и сессии - это два абсолютно разных понятия. Они между собой никак не связаны и работают независимо друго от друга. Если ты поймешь это, то для тебя станет очевидным, что проблема у тебя не с сессиями, а именно с аутентификацией.

Это я уже понял. И понял еще до начала поста.
Цитировать
FreeSpace:
Если этот способ не сработал, то никаких других вариантов не отсается

Спасибо. Тоже понял.
Цитировать
FreeSpace:
Если тебе нравится стандартное браузеровское окошко - используй .htaccess/.htpasswd. Если ты хочешь сам нарисовать страницу ввода пароля и обеспечить нормальную возможность выхода пользователей, используй авторизацию на куках/сессии.

Идея не моя, просто так люди хотят. Придется их обломать.

Всем спасибо.
LJ: Backslashed life (rss)

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28