Я создаю конечную точку API. Эта конечная точка должна быть защищена базовым протоколом HTTP.PHP basic auth setHeader, если данные неверны
Если API запрашивает доступ, я хотел бы показать http basic auth, если данные неверны, я хотел бы отправить 403 запрещенное сообщение. Если данные верны, я просто показываю «правильно» на данный момент. Вот мой код:
$username = null;
$password = null;
// if data is sent
if (isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW'])) {
$username = $_SERVER['PHP_AUTH_USER'];
$password = $_SERVER['PHP_AUTH_PW'];
//perforn check if data is correct
if($username == 'as' && $password = 'pass'){
die(var_dump("correct"));
}
//if data uncorrect throw 403 code
else
header('HTTP/1.0 403 Forbidden');
}
//request HTTP auth if nothing sent
if (!isset($_SERVER['PHP_AUTH_USER']) && !isset($_SERVER['PHP_AUTH_PW'])) {
header('WWW-Authenticate: Basic realm="My Realm"');
header('HTTP/1.0 401 Unauthorized');
die();
}
В настоящий момент мой код запускает 403 все время. Любая идея, как исправить это соответствие моим требованиям, описанным выше?
Этот скрипт не работает на всех серверах, я попробовал его на веб-сервере и скрипт продолжает выскакивать логин диалог, я протестировал его на сервере localhost и отлично работал. – Jer
любая идея, почему это происходит? В моей локальной настройке dev я использую MAMP (веб-сервер apache). –
По-прежнему не выяснили, почему это происходит, но это как-то связано с «HTTP_AUTHORIZATION», я думаю. См. Ответ ниже, может быть, это правильный ответ? – Jer