撤销过期的令牌:Laravel

时间:2018-07-25 18:19:25

标签: php laravel-passport

我已经使用Laravel Passport实现了OAuth2授权。

我已经在api.php中为用户注销创建了一条路由,如下所示:

Route::group(['middleware' => 'auth:api'], function () {       
    Route::get('logout', 'AuthController@logout');
});

在控制器AuthController.php中:

/**
 * Logout user (Revoke the token)
 *
 * @param Request $request
 * @return \Illuminate\Http\JsonResponse [string] message
 */
public function logout(Request $request)
{           
    $accessToken = $request->user()->token();

    DB::table('oauth_refresh_tokens')
        ->where('access_token_id', $accessToken->id)
        ->update([
            'revoked' => true
        ]);

    $accessToken->revoke();

    return response()->json([
        'message' => 'Successfully logged out'
    ]);
}

当用户注销并且令牌仍处于活动状态时,我得到successful logout

但是,如果用户注销并且令牌已过期,我将得到unauthorized的结果,因此无法撤消令牌。

有一种方法可以撤消已经过期的令牌,因为Lararvel Passport不允许我进入,因为我持有过期的令牌。

我可以刷新令牌,然后注销,但这没有意义。

任何帮助将不胜感激。谢谢。

0 个答案:

没有答案