Slimframework request-> заголовки не читаются Авторизация

Я пытаюсь реализовать простую авторизацию с slim на serveride и angularJS на стороне клиента. Для тестирования REST APi i'm с помощью программы под названием Rested для Mac, которая позволяет отправлять вызовы отдыха.

Я хочу доставить, как только авторизация завершится, при каждом отдыхе вызовите токен jwt, который может быть использован в slim для авторизации запросов для определенных путей.

Теперь я передаю через Rested следующий заголовок и тело:

Accept: */* 
Accept-Encoding: gzip, deflate 
Content-Type: application/json 
Authorization: jwt-test 
Accept-Language: de-de

{ 
  "login": "TestLogin", 
  "password": "TestPassword", 
  "uuid": "dsfglj45690dfgkl456" 
}

И чем просто распечатать весь заголовок:

Slim\Http\Headers Object ( [data:protected] => Array ( [Host] => localhost:8888 
[Content-Type] => application/json [Content-Length] => 89 [Connection] 
=> keep-alive [Accept] => */* [User-Agent] => Rested/2009 CFNetwork/673.4 
Darwin/13.4.0 (x86_64) (iMac13%2C2) [Accept-Language] => de-de [Accept-Encoding] 
=> gzip, deflate ) )

Как вы можете видеть, в этом массиве нет авторизации.

Я также проверил это с помощью firefox напрямую, те же результаты. O может видеть строку авторизации в заголовках запроса с firebug, но она не находится в сбрасываемом массиве в slimframework.

Есть ли у кого-нибудь подсказка, где моя проблема?

Спасибо заранее и любезны.

solick

Ответ 1

Проблема

Базовый заголовок проверки подлинности должен выглядеть примерно так.

Authorization: Basic cm9vdDp0MDBy

Строка после Basic создается путем объединения имени пользователя и пароля в строку типа username:password. Последовательная строка затем кодируется с использованием base64.

Вы отправляете заголовок на веб-сервер, который PHP не будет анализировать. Не уверен, что это считается ошибкой или функцией.

Authorization: jwt-test 

Решение

С текущей версией Slim, если вы добавили следующее в файл .htaccess.

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

Затем вы можете получить доступ к даже нестандартному заголовку с любым из них.

var_dump($_SERVER["HTTP_AUTHORIZATION"]);
var_dump(apache_request_headers()["Authorization"]);
var_dump($app->request->headers("Authorization"));

Он дает следующий результат:

string 'jwt-test' (length=8)
string 'jwt-test' (length=8)
string 'jwt-test' (length=8)

Вы также можете использовать другое имя заголовка, например X-Authorization.

Ответ 2

Поскольку я тоже с этим боролся, вот что я нашел, как описано здесь в документации Slim, без необходимости что-либо добавлять в файл .htaccess

$request->getHeader("Authorization");