Laravel 5.8 通行证注销方法(未验证)

Laravel 5.8 passport logout method ( Unauthenticated )

当我调用路由 /api/logout 时,我得到 Unauthenticated,我已经从我的 /api/login 方法中获得了令牌,当我尝试使用相同 [=] 的 运行 演示请求时也是如此17=] 效果很好

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

您确定您的 Auth 是正确的吗,因为您在路由中间件中使用了 Auth API。

而不是auth()->user()->tokens

使用auth('api')->user()->tokens

auth() 是一个辅助函数,您不能在其中传递您使用的身份验证参数

特别是如果您使用多个身份验证系统,那么您应该确定哪个身份验证?

因此请确保您从 api 身份验证注销而不是默认身份验证写入

public function logout( )
    {
        auth('api')->user()->tokens->each(function ($token, $key) {
            $token->delete();
        });

        return response()->json('Logged out', 200);
    }