Php 如何在api中注销?在拉威尔使用护照

Php 如何在api中注销?在拉威尔使用护照,php,laravel,Php,Laravel,现在,当我想注销我的用户时,我向我的API发送一个post请求(带有承载令牌) UserApiController.php public function logout(){ if (Auth::check()) { Auth::user()->token()->revoke(); return response()->json(['success' =>'logout_success'],200); }else{

现在,当我想注销我的用户时,我向我的API发送一个post请求(带有承载令牌)

UserApiController.php

public function logout(){   
    if (Auth::check()) {
        Auth::user()->token()->revoke();
        return response()->json(['success' =>'logout_success'],200); 
    }else{
        return response()->json(['error' =>'api.something_went_wrong'], 500);
    }
}

这里的答案都很好。如果revoke()不起作用,即

Auth::user()->token()->revoke();
不起作用,使用,

  public function logout(Request $request)
  {
    $response =  self::HTTP_CREATED;
    $user= $request->user();
    unset($user->api_token);
    $user->save();

    return response()->json([

      'response' => 'true', 
      'result' => '',
      'message' => 'User logged out'

  ], $response);

  }

目标是从表中删除令牌,上面的代码会手动执行此操作。

如果在api路由中不使用中间件,也会使用laravel 7.24进行测试:

api.php

Route::post('/logout', 'LoginController@logout');
使用api guard(=passport),然后使用标准的laravel passport“revokeAccessToken”方法


更改承载令牌值您可以尝试:您可以使用承载令牌创建get request for logout方法。并撤销该令牌。可能是的副本
Route::post('/logout', 'LoginController@logout');
public function logout ()
    {
        $tokenRepository = app('Laravel\Passport\TokenRepository');

        $user = auth('api')->user();

        if ($user) {
            $tokenRepository->revokeAccessToken($user->token()->id);
            return 'logged out';
        } else {
            return 'already logged out';
        }
    }