当我调用路由/api/logout
时获得Unauthenticated
时,我已经从/api/login
方法中获取了令牌,而且当我尝试使用相同的middleware
运行演示请求时,它也非常完美
Route::middleware('auth:api')->get('/user', function (Request $request) {
return $request->user();
});
路由(在api.php中带有api前缀)
Route::middleware('auth:api')->post('/logout', 'PassportAuthController@logout')->name('api.auth.logout');
简单的登出功能
public function logout( )
{
auth()->user()->tokens->each(function ($token, $key) {
$token->delete();
});
return response()->json('Logged out', 200);
}
答案 0 :(得分:0)
您确定您的身份验证正确,因为您在路由中间件中使用身份验证API。
代替auth()->user()->tokens
使用auth('api')->user()->tokens
答案 1 :(得分:0)
auth()
是一个辅助函数,您无法在其中传递所使用的auth的参数
特别是如果您使用多个身份验证系统,则应确定哪个身份验证?
因此请确保您从api身份验证登出,而不是默认身份验证写出
public function logout( )
{
auth('api')->user()->tokens->each(function ($token, $key) {
$token->delete();
});
return response()->json('Logged out', 200);
}