Laravel OAuth2 Passport API, генерирует токен, но затем не может выполнять запросы: «не аутентифицирован» - PullRequest
2 голосов
/ 14 июля 2020

Я установил OAuth2 Passport в свой проект Laravel. Я использую почтальон для тестирования, я могу создать нового пользователя, я могу войти в систему (токен создается) и выйти из системы. После входа в систему я пытаюсь сделать запрос к конечной точке API, но здесь я застреваю, потому что неважно, что я получаю 401 Несанкционированный ответ в почтальоне "message": "Unauthenticated."

Когда я делаю запрос GET к конечной точке, я включаю следующие заголовки :

Content-Type: application / json

X-Requested-With: XMLHttpRequest

Авторизация: Bearer TOKENHERE

Это мой файл маршрутов api. php

Route::middleware('auth:api')->get('/user', function (Request $request) {
return $request->user();
});

Route::get('trip/{id}', 'TripController@getUserTrips');
Route::get('trainroute/{id}', 'TripController@getTrainRouteInfo');
Route::get('routestops/{id}', 'TripController@getRouteStops');
Route::post('trip', 'TripController@addTrip');
Route::get('trip', 'TripController@errorTrip') -> name('test');
           

Route::group([
    'prefix' => 'auth'
], function () {
    Route::post('login', 'AuthController@login');
    Route::post('signup', 'AuthController@signup');
  
    Route::group([
      'middleware' => 'auth:api'
    ], function() {
        Route::get('logout', 'AuthController@logout');
        Route::get('user', 'AuthController@user');
    });
});

В моем TripController, где находятся конечные точки, к которым я sh могу получить доступ, я включил

public function __construct()
    {
            $this->middleware('auth');
    }

Я искал ответы и пробовал несколько вещей, таких как редактирование файла .htaccess и включение заголовка авторизации в запрос GET.

1 Ответ

1 голос
/ 14 июля 2020

После долгого, многочасового погружения в эту проблему ответ был довольно простым, в моем TripController у меня было это

public function __construct()
    {
            $this->middleware('auth');
    }

, но я использую маршруты api, а затем я увидел login et * Промежуточное ПО 1008 * было названо auth: api, поэтому я попробовал то же самое и ... ЭТО РАБОТАЛО!

так что это правильно

public function __construct()
    {
            $this->middleware('auth:api');
    }
...