Аутентификация Laravel Passport API не работает с токеном на предъявителя - PullRequest
0 голосов
/ 07 октября 2018

Я сейчас занимаюсь разработкой приложения Laravel.Внутри приложения мне нужно создать публичный API, который должен быть доступен, если клиент получил токен доступа.

Поэтому я использую паспорт / паспорт.

Получение access_token работает нормально.Важной частью является аутентификация с помощью этого токена доступа и получение данных JSON в ответ на защищенный маршрут.

Настройка следующая:

  • Laravel 5.7.6
  • Laravel Passport 6.0.7

С Laravel 5.6.30и в Passport 6.0.7 сериализация cookie отключена.

/ app / Providers / AuthServiceProvider.php

$this->registerPolicies();
Passport::withoutCookieSerialization(); // because of the Laravel Update
Passport::routes();
Passport::tokensExpireIn(Carbon::now()->addDays(20));
Passport::refreshTokensExpireIn(Carbon::now()->addDays(20));

Как уже упоминалось в здесь я изменил время истечения токенов, чтобы они надевалине переполняйте или не начинайте с - .

более здесь @adamj, упомянутых для просмотра mapApiRoutes ()

/ app / Providers / RouteServiceProviders.php

protected function mapApiRoutes()
{
    Route::prefix('api')
        ->middleware('auth:api')
        ->namespace($this->namespace)
        ->group(base_path('routes/api.php'));
}

Запрос, который я отправляю на мой API, получил следующий набор заголовков:

Accept: application/json 
Authorization: Bearer {my_access_token}

Маршрут, к которому я пытаюсь получить доступ в Почтальоне, следующий:

Route::group(['middleware' => ['auth:api']], function () {
  Route::get('/hello/world', function () {
      return 'Hello World';
  });
});

В таком случае Ответ всегда имеет статус HTTP 401. Может кто-нибудь помочь?

Я действительно больше не представляю, как это исправить.

Спасибо с уважением!

Ответы [ 2 ]

0 голосов
/ 10 мая 2019

Это потому, что Apache по умолчанию не передает заголовки авторизации в PHP.Я нашел это решение:

https://support.deskpro.com/en/kb/articles/missing-authorization-headers-with-apache

0 голосов
/ 07 октября 2018

Ошибка не была внутри Laravel.Ошибка была связана с почтальоном.

На вкладке авторизации вы можете выбрать тип.Если вы не выберете Без аутентификации ваш вручную установленный заголовок заменен почтальоном.

Надеюсь, это может кому-нибудь помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...