[英]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.