Я использую laravel 5.5 и tymon / jwt-auth в качестве поставщика услуг jwt.
Когда я использую фасад JWTAuth с контроллеров — все идет хорошо — я получаю токен и могу манипулировать любым предметом.
Когда я пытаюсь использовать фасад JWTAuth внутри пользовательского промежуточного программного обеспечения, которое я создал — заголовки исчезли, а запрос пуст.
Я уверен, что это не проблема в промежуточном программном обеспечении laravel, поскольку промежуточное программное обеспечение JWT может получить маркер по заголовкам.
Я использую обратный прокси-сервер nginx через порт 80, который перенаправляет на сервер apache через порт 8080, и apache запускает проект laravel.
Предложение кого-нибудь?
Код:
api.php
Route::get('organizations', 'OrganizationController@index')->middleware('org');
Kernel.php
'org' => \App\Http\Middleware\OrganizationMiddleware::class,
OrganizationMiddleware.php
<?php
namespace App\Http\Middleware;
use Closure;
use JWTAuth;
class OrganizationMiddleware
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$token = JWTAuth::getToken();
return response()->json(['token' => $token], 200);
// return $next($request);
}
}
Ни одна из моих попыток не идет хорошо. Промежуточное программное обеспечение отвечает, но запрос полностью пуст. Поэтому я не могу получить заголовки или токен, или любой другой параметр.
Очень странно. Протестировано также локально, только на apache и с соответствующим файлом .htaccess. Также включен CORS на всякий случай.
Токен полностью пуст.
ОБНОВИТЬ:
composer.json
"require": {
"php": ">=5.6.4",
"aws/aws-sdk-php-laravel": "~3.0",
"illuminate/contracts": "^5.5",
"laravel/framework": "5.5.*",
"laravel/tinker": "~1.0",
"spatie/laravel-fractal": "^5.2",
"tymon/jwt-auth": "0.5.11"},
$request->bearerToken()
вытянет токен Авторизационного канала из заголовков запроса.
$request->header()
если вы хотите получить все заголовки.
$request->header('name', 'default')
чтобы получить заголовок по имени.
$request->headers
чтобы получить HeaderBag
,
Не уверен, почему вещи будут пустыми в этот момент. Информация о версии может помочь.
Установите свой токен JWT в заголовок
$request->headers->set('Authorization', 'Bearer' . $token);
Возможно, заголовки теряются при перенаправлении запроса с nginx на apache. Проверьте настройки вашего сервера.