このアプリでは、ユーザーがログアウトすると、特定のデバイスのアクセストークンをこの方法で無効にします。
$user = $request->user();
$value = $request->bearerToken();
$id = (new Parser())->parse($value)->getHeader('jti');
$token = $user->tokens->find($id);
$token->revoke();
しかし、ユーザーが自分のアカウントを無効にした場合、ユーザーがログインしているすべてのデバイスからのすべてのアクセストークンを無効にしたいと思います。ありがとう
パスポートが提供する HasApiTokens
特性を見てください。 documentation は、この特性をユーザーモデルに追加することを推奨しています。提供するメソッドの1つはtokens()
です。これは、Laravel\Passport\Token
と特性を使用するモデルとのhasMany
関係を定義します。これを使用して、特定のユーザーのすべてのトークンのリストを取得できます。
$userTokens = $userInstance->tokens;
トークンモデル自体にはrevoke
メソッドがあります。
foreach($userTokens as $token) {
$token->revoke();
}