Laravel在特定路由中出现“未经身份验证”错误

时间:2020-06-21 17:03:56

标签: laravel laravel-sanctum

在Laravel 7后端,我有一些api网址,例如:

puckImg.animate().translationXBy(100).setDuration(300);
puckImg.animate().translationXBy(30).setDuration(2000);
puckImg.animate().translationXBy(90).setDuration(5000);

路由/ logout和/ profile / 1正常工作,而路由/ logout / all则给出错误:

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');
});

我使用的令牌是正确的,因为我可以将其用于其他路由并且可以使用。
当然,在尝试/ logout / all之前,我没有调用/ logout。

我试图更改logoutAll的控制器功能,将其设置为“ logout”:

{
"error": "Unauthenticated"
}

以这种方式工作,但是调用了相同的功能。
那是函数的代码:

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');
});

请帮助我。

更新

如果我使用CURL命令,则输出为:

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);
}

1 个答案:

答案 0 :(得分:2)

问题出在__constructor()方法中

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

我将其更改为:

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

现在可以正常工作了。