我已经使用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不允许我进入,因为我持有过期的令牌。
我可以刷新令牌,然后注销,但这没有意义。
任何帮助将不胜感激。谢谢。