繁体   English   中英

如何在api中注销? 在 Laravel 中使用 Passport

[英]How to logout in the api? using Passport in laravel

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

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

用户接口控制器.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-routes 中使用中间件,还使用 ​​laravel 7.24 进行了测试:

api.php

Route::post('/logout', 'LoginController@logout');

使用 api-guard(= 护照),然后使用标准的 Laravel 护照“revokeAccessToken”方法。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM