Laravel OAuth2 Passport API,生成令牌,但随后无法发出请求:“未经身份验证”

时间:2020-07-14 17:48:21

标签: laravel oauth-2.0 laravel-passport

我已将OAuth2 Passport安装到我的Laravel项目中。 我正在使用邮递员进行测试,可以创建新用户,可以登录(生成令牌)并注销。 登录后,我尝试向API端点发出请求,但是无论我在邮递员 "message": "Unauthenticated."

中收到401未经授权的响应,都是被卡住了

当我向端点发出GET请求时,我会包含以下标头:

内容类型:application / json

X-Requested-With:XMLHttpRequest

授权:不记名令牌

这是我的路线文件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中,我希望访问的端点在哪里

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

我已经搜索了答案并尝试了一些操作,例如编辑.htaccess文件,并确保将Authorization标头包含在GET请求中。

1 个答案:

答案 0 :(得分:1)

在深入研究这个问题很长时间之后,答案很简单,在我的TripController中我有这个

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

但是我使用的是api路由,然后我看到登录等中间件被命名为'auth:api',所以我尝试了同样的方法,并且...工作了!

所以这是正确的

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