[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как выйти из HTTP авторизации
brdm
Подскажите пожалуйста как выйти из HTTP авторизации не закрывая браузер.

В чем проблема?

В админке движка есть возможность установки способа авторизации в админку - путем cookies или http авторизация.

Если был установлен способ авторизации через cookies то после установки в админке другого способа - http происходит logout из админки

setcookie('admin','', time() -3600); 
header("location: ./index.html");


и далее войти в нее можно будет путем http авторизации.

Если же вход в админку был выполнен путем http авторизации то при смене способа авторизации на куки желательно-бы также выйти из админки и войти в нее уже через куки.

Но проблема в том, что если вход в админку был выполнен через http то движок остается в админке до закрытия браузера.

Можно ли выйти из админки не закрывая браузер?

Спасибо.



Спустя 1 час, 15 минут, 42 секунды (17.08.2010 - 22:39) UnWind написал(а):
При HTTP авторизации создаются две переменные
$_SERVER['PHP_AUTH_USER']
$_SERVER['PHP_AUTH_PW']

Соответственно выход можно произвести при помощи удаления значений переменных

unset($_SERVER['PHP_AUTH_USER']);
unset($_SERVER['PHP_AUTH_PW']);

Выход после cookie авторизации, осуществляется заменой существуещего, на cookie с пустым значением

setcookie('admin', 0);

Ну и в конце каждого примера вставляем переадресацию на "./index.php"

header("Location: ./index.php");

Спустя 53 минуты, 25 секунд (17.08.2010 - 23:32) brdm написал(а):
Спасибо. Уже ближе.

Дело в том, что
unset($_SERVER['PHP_AUTH_USER']);unset($_SERVER['PHP_AUTH_PW']);


не работает.

Они удаляются только после закрытия браузера.
Очевидно нужно послать еще какой то заголовок или еще какая-то хитрость...

Спустя 6 минут, 6 секунд (17.08.2010 - 23:39) brdm написал(а):
Попробовал.

Не получается.

Спустя 1 минута, 58 секунд (17.08.2010 - 23:40) UnWind написал(а):
Цитата
Попробовал.

Не получается.

Да я ошибся, по этому и пост удалил - сплю уже на 50%.
Сейчас чего нибудь придумаю.

Спустя 11 минут, 18 секунд (17.08.2010 - 23:52) UnWind написал(а):
brdm
Странно, мне почему то кажеться, что реализуется это вот так
unset($_SERVER['PHP_AUTH_PW'],  $_SERVER['PHP_AUTH_USER'])

ну и второй вариант

session_unset ();
session_destroy ();

Попробуй второй вариант, если не получиться - отпишись, завтра на свежую голову попробую вспомнить да ответить. sad.gif

Спустя 9 минут, 12 секунд (18.08.2010 - 00:01) brdm написал(а):
Попробовал.

Пока не работает.

Спустя 2 минуты, 55 секунд (18.08.2010 - 00:04) UnWind написал(а):
brdm
Хм. Ладно, оставим этот вопрос на завтра.
Спокойной ночи.
Офф.

Спустя 4 минуты, 58 секунд (18.08.2010 - 00:09) UnWind написал(а):
brdm
P.S.:> Может заместо выхода использовать неправильную аунтефикацию ?
Т.е. не правильный логин и пароль, пусть даже вместо них будут значения NULL.
По мойму у http аунтефикации нет достойного варината выхода.
Во всяком случае я только на такие посты и натыкаюсь в google, в учебнике тоже 0 про выход.
Хотя может у экспертов найдётся более разумный способ, я просто не пользовал данный вид аунтефикации, поэтому помоч тут мало чем могу.

Спустя 7 часов, 26 минут, 17 секунд (18.08.2010 - 07:35) twin написал(а):
Вся беда в том, что эти переменные
$_SERVER['PHP_AUTH_PW']
$_SERVER['PHP_AUTH_USER']

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

Спустя 4 часа, 8 минут, 38 секунд (18.08.2010 - 11:44) brdm написал(а):
Спасибо.
С помощью сессий вроде получается.

У меня движок на текстовых базах. Пароль и логин в админку хранится в settings.php

Прежде вход на любую страницу админки проверялся на совпадение $_SERVER['PHP_AUTH_PW'] $_SERVER['PHP_AUTH_USER'] с паролем и логином.
Теперь же придется проверять просто наличие $_SESSION['login'] = true

Правильно ли это в части безопасности?

Спустя 1 час, 59 минут, 22 секунды (18.08.2010 - 13:43) twin написал(а):
Нормально
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.