Получить пароль пользователя в php при использовании базовой аутентификации - PullRequest
0 голосов
/ 04 ноября 2019

Я хочу использовать базовую аутентификацию в php (я использую Apache в качестве сервера, но я хочу проходить аутентификацию самостоятельно). Итак, я назначил роль сеансу, когда пользователь выполнил вход в систему. Если роль пуста, я буду спрашивать аутентификацию с кодом, который я нашел в php auth . Я делаю

header('WWW-Authenticate: Basic realm="My Realm"');
header('HTTP/1.0 401 Unauthorized');
echo 'Text to send if user hits Cancel button';
exit;

В Apache аутентификация не требуется, только по моему php-коду.

Насколько я понял, я должен получить что-то вроде $_SERVER['PHP_AUTH_USER'] или $_SERVER['HTTP_AUTHORIZATION'], ноесли я печатаю переменную $_SERVER, эти атрибуты отсутствуют.

Я прошел эту ссылку , и я получил переменную HTTP_AUTHORIZATION, если я установил

SetEnvIf Authorization "(. *)" HTTP_AUTHORIZATION = $ 1

, как они предлагают, но он пуст (честно говоря, я ожидал, что это не сработает, потому что это то, что я делаю в своем коде,apache не сделал что-то).

Ну, в конце концов, как я могу получить имя пользователя: пароль базовой аутентификации, используя только php-код, без настройки Apache? Это не может быть так сложно, я потерялся в стакане воды?

Спасибо всем

РЕДАКТИРОВАТЬ: Решение найдено: я новичок в php и, возможно, я сделалкакая-то глупая ошибка.

По сути, мой псевдокод был:

check_auth_variables_in_SERVER_and_set_role()
if ( still_no_role )
{
    set header for login
    exit # it will ask login
}

Теперь я изменился на:

if ( no PHP_AUTH_USER and other variables in SERVER)
{
    set header for login
    exit # it will ask login
}

check_auth_variables_in_SERVER_and_set_role()

if ( still_no_role )
{
    echo "Login failed";
    exit;
}

Не могли бы вы подробно объяснить разницу в двухструктуры кода? Я думаю, что я был немного смущен рабочим процессом

Спасибо всем

...