Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> аутентификация, кеширование страницы 
:(
    Опции темы
Zzet
Дата 15.12.2009, 00:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 28.6.2009

Репутация: нет
Всего: нет



Ипатьев - сделать по-человечески, на одних сессиях, значит без заголовков? буду думать, спасибо
PM MAIL   Вверх
Ипатьев
Дата 15.12.2009, 00:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 0
Всего: 37



думать тут нечего. 
так никто не делает. 
делают или на сессиях, или на заголовках. причем в последнем случае будут проблемы с повторным заходом все равно.
собственно и здесь проблема была именно в этом. сессию убили, но браузеру-то вы не сказали, что сеанс окончен, все свободны. 
PM MAIL   Вверх
sTa1kEr
Дата 17.12.2009, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 11
Всего: 146



HTTP authentication with PHP
Цитата

Both Netscape Navigator and Internet Explorer will clear the local browser window's authentication cache for the realm upon receiving a server response of 401. This can effectively "log out" a user, forcing them to re-enter their username and password. Some people use this to "time out" logins, or provide a "log-out" button. 

Код

<?php
function authenticate() {
    header('WWW-Authenticate: Basic realm="Test Authentication System"');
    header('HTTP/1.0 401 Unauthorized');
    echo "You must enter a valid login ID and password to access this resource\n";
    exit;
}
 
if (!isset($_SERVER['PHP_AUTH_USER']) ||
    ($_POST['SeenBefore'] == 1 && $_POST['OldAuth'] == $_SERVER['PHP_AUTH_USER'])) {
    authenticate();
} else {
    echo "<p>Welcome: {$_SERVER['PHP_AUTH_USER']}<br />";
    echo "Old: {$_REQUEST['OldAuth']}";
    echo "<form action='{$_SERVER['PHP_SELF']}' METHOD='post'>\n";
    echo "<input type='hidden' name='SeenBefore' value='1' />\n";
    echo "<input type='hidden' name='OldAuth' value='{$_SERVER['PHP_AUTH_USER']}' />\n";
    echo "<input type='submit' value='Re Authenticate' />\n";
    echo "</form></p>\n";
}
?>

PM MAIL   Вверх
Ипатьев
Дата 17.12.2009, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 0
Всего: 37



sTa1kEr, осталось узнать, в какой момент этот волшебный код запускать ;-)
PM MAIL   Вверх
sTa1kEr
Дата 17.12.2009, 17:03 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 11
Всего: 146



Цитата(Ипатьев @  17.12.2009,  17:36 Найти цитируемый пост)
sTa1kEr, осталось узнать, в какой момент этот волшебный код запускать ;-) 

Этот код не надо запускать. Потому что этот код - всего-лишь наглядный пример, демонстрирующий как
Цитата(sTa1kEr @  17.12.2009,  17:28 Найти цитируемый пост)
use this to "time out" logins, or provide a "log-out" button


Это сообщение отредактировал(а) sTa1kEr - 17.12.2009, 17:09
PM MAIL   Вверх
Ипатьев
Дата 17.12.2009, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 0
Всего: 37



проблема в том, что в данном конкретном случае этот код не поможет.
поскольку авторизация делается сессиями.
PM MAIL   Вверх
sTa1kEr
Дата 17.12.2009, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 11
Всего: 146



Цитата(Ипатьев @  17.12.2009,  18:12 Найти цитируемый пост)
проблема в том, что в данном конкретном случае этот код не поможет.
поскольку авторизация делается сессиями. 

Отнюдь. Это своего рода решение как сделать "unset($PHP_AUTH_PW)", которое так искал автор. Т.е. для logout'а ему достаточно выдать ответ 401, или сделать редирект на страницу с авторизацией.
PM MAIL   Вверх
Ипатьев
Дата 17.12.2009, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 0
Всего: 37



ну вот об этом и речь.
я же и пишу - весь вопрос в том, когда этот волшебный код запускать.
не в момент логаута же
PM MAIL   Вверх
sTa1kEr
Дата 17.12.2009, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 11
Всего: 146



Цитата(Ипатьев @  17.12.2009,  18:27 Найти цитируемый пост)
не в момент логаута же 

Цитата(sTa1kEr @  17.12.2009,  18:23 Найти цитируемый пост)
Т.е. для logout'а ему достаточно выдать ответ 401, или сделать редирект на страницу с авторизацией. 


PM MAIL   Вверх
Ипатьев
Дата 17.12.2009, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 0
Всего: 37



тогда у юзера вылезет окно авторизации, и юзер не будет знать, что с ним делать
это не совсем похоже на логаут, как мне кажется smile
PM MAIL   Вверх
sTa1kEr
Дата 17.12.2009, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 11
Всего: 146



Цитата(Ипатьев @  17.12.2009,  18:31 Найти цитируемый пост)
тогда у юзера вылезет окно авторизации, и юзер не будет знать, что с ним делать
это не совсем похоже на логаут, как мне кажется smile 

Почему-же? Он сделал logout, стал не авторизованным пользователем и по этому ему предлагают авторизоваться вновь. Так часто делают и в классическом механизме, редиректят на форму с авторизацией. И потом кнопка "Cancel" там не спроста.

Это сообщение отредактировал(а) sTa1kEr - 17.12.2009, 17:42
PM MAIL   Вверх
Ипатьев
Дата 17.12.2009, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 0
Всего: 37



одно дело - страница сайта с формой авторизации. и ссылками в с любой раздел сайта
совсем другое - мерзкое модальное окно, которое пока не закроешь, никуда не попадешь
и выдавать его надо только для ввода пароля, разумеется. для чего состояние - онлайн или оффлайн - придется писать в базу.
PM MAIL   Вверх
sTa1kEr
Дата 17.12.2009, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 11
Всего: 146



Цитата(Ипатьев @  17.12.2009,  18:45 Найти цитируемый пост)
совсем другое - мерзкое модальное окно, которое пока не закроешь, никуда не попадешь

Ну мерзкое оно или нет решать ТС, раз уж он решил использовать этот способ smile 

Цитата(Ипатьев @  17.12.2009,  18:45 Найти цитируемый пост)
которое пока не закроешь, никуда не попадешь

В общем да, именно для этого авторизация посредством HTTP протокола и нужна. Что бы либо разрешить доступ ко всему ресрсу, либо не разрешить. А уж устраивает это ТС или нет мы можем узнать от него самого.

Добавлено через 1 минуту и 50 секунд
Т.е. тут весь вопрос в юзабилити, если ТС устраивает такое поведение сайта, то флаг ему в руки.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса

Внимание: данный раздел предназначен для решения сложных, нестандартных задач.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Для профи | Следующая тема »


 




[ Время генерации скрипта: 0.1002 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.