Laravel 5.8护照注销方法(未经身份验证)

时间:2019-07-27 17:50:28

标签: laravel laravel-passport bearer-token

当我调用路由/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);
    }

2 个答案:

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