我已将OAuth2 Passport安装到我的Laravel项目中。
我正在使用邮递员进行测试,可以创建新用户,可以登录(生成令牌)并注销。
登录后,我尝试向API端点发出请求,但是无论我在邮递员 "message": "Unauthenticated."
当我向端点发出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请求中。
答案 0 :(得分:1)
在深入研究这个问题很长时间之后,答案很简单,在我的TripController中我有这个
public function __construct()
{
$this->middleware('auth');
}
但是我使用的是api路由,然后我看到登录等中间件被命名为'auth:api',所以我尝试了同样的方法,并且...工作了!
所以这是正确的
public function __construct()
{
$this->middleware('auth:api');
}