Я прочитал этот учебник, и мне удалось заставить его работать отлично. Единственная проблема заключается в том, что когда я переключаюсь с ? Token = {token_here} на опознаватель авторизации {токен здесь}, он перестает работать. Я использую Postman, и я пишу авторизацию в поле заголовка и несущей {пробел} {токен} в значении. Библиотека, которую я использую, – https://github.com/tymondesigns/jwt-auth
Я читал в Wiki о проблеме Apache, и я не уверен, что это мое дело. Я диагностировал его с помощью функции getallheaders () PHP. Если я умру и сброшу эту функцию, это покажет, что заголовок авторизации доступен. Я пытался с и без модификации .htaccess.
.htaccess
<IfModule mod_rewrite.c> <IfModule mod_negotiation.c> Options -MultiViews </IfModule> RewriteEngine On # RewriteCond %{HTTP:Authorization} ^(.) # RewriteRule . - [e=HTTP_AUTHORIZATION:%1] # Redirect Trailing Slashes If Not A Folder... RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)/$ /$1 [L,R=301] # Handle Front Controller... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] </IfModule>
Файл маршрута
dd(getallheaders()['Authorization']); Route::group(['prefix' => 'api'], function() { Route::post('login', 'AuthenticateController@email'); Route::group(['middleware' => ['jwt.auth', 'jwt.refresh']], function() { Route::post('logout', 'AuthenticateController@logout'); Route::get('test', function() { return response()->json(['foo' => 'bar']); }); }); });
Любые мысли о том, где я ошибаюсь?
Напоминание : если я использую http: // localhost / projects / linus / public / api / test? Token = {token}, он работает.
Как оказалось, проблема заключалась в том, что в конфигурации заголовка в файле .htaccess отсутствовала *
в обеих строках. Вместо
RewriteCond %{HTTP:Authorization} ^(.) RewriteRule . - [e=HTTP_AUTHORIZATION:%1]
это показать
RewriteCond %{HTTP:Authorization} ^(.*) RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]
Особая благодарность Джеймсу-Падди .