Laravel Ошибка «Неаутентифицировано» в указанном c маршруте - PullRequest
0 голосов
/ 21 июня 2020

В моем Laravel 7 бэкэнде у меня есть URL-адрес api, например:

Route::group(['namespace' => 'Api', 'middleware' => ['auth:sanctum']], function(){
    Route::post('logout/all', 'Auth\LoginController@logoutAll');
    Route::post('logout', 'Auth\LoginController@logout');
    Route::put('profile/{profile}', 'ProfileController@update');
});

Маршруты / выход из системы и / профиль / 1 работают нормально, в то время как маршрут / выход / все выдает ошибку:

{
"error": "Unauthenticated"
}

Токен, который я использую, правильный, потому что я могу использовать его для других маршрутов, и он работает. Конечно, я не вызвал / logout перед тем, как попробовать /logout/all.

Я попытался изменить функцию контроллера logoutAll, установив для него значение «logout»:

Route::group(['namespace' => 'Api', 'middleware' => ['auth:sanctum']], function(){
    Route::post('logout/all', 'Auth\LoginController@logout');
    Route::post('logout', 'Auth\LoginController@logout');
    Route::put('profile/{profile}', 'ProfileController@update');
});

Таким образом это работает, но вызывает ту же функцию. Это код функции:

public function logout(Request $request)
{
    Auth::user()->tokens()->where('id', Auth::user()->currentAccessToken()->id)->delete();
    return response()->json(['data' => 'User logged out.'], 200);
}

public function logoutAll(Request $request)
{
    //do nothing
    return response()->json(['data' => 'User loggedAll out.'], 200);
}

Помогите мне, пожалуйста.

ОБНОВЛЕНИЕ

Если я использую команду CURL, это вывод:

Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException: The POST method is not supported for this route. Supported methods: GET, HEAD. in file /Applications/MAMP/htdocs/test-server/vendor/laravel/framework/src/Illuminate/Routing/AbstractRouteCollection.php on line 117

#0 /Applications/MAMP/htdocs/test-server/vendor/laravel/framework/src/Illuminate/Routing/AbstractRouteCollection.php(103): Illuminate\Routing\AbstractRouteCollection->methodNotAllowed(Array, 'POST')
#1 /Applications/MAMP/htdocs/test-server/vendor/laravel/framework/src/Illuminate/Routing/AbstractRouteCollection.php(40): Illuminate\Routing\AbstractRouteCollection->getRouteForMethods(Object(Illuminate\Http\Request), Array)
#2 /Applications/MAMP/htdocs/test-server/vendor/laravel/framework/src/Illuminate/Routing/RouteCollection.php(162): Illuminate\Routing\AbstractRouteCollection->handleMatchedRoute(Object(Illuminate\Http\Request), NULL)
...

1 Ответ

2 голосов
/ 21 июня 2020

Проблема была в методе __constructor ()

$this->middleware('guest')->except('logout'); 

Я меняю его на:

$this->middleware('guest')->except(['logout', 'logoutAll']);

Теперь все работает нормально.

...