2017-03-17 5 views
1

私たちのアプリでは、ユーザーがログアウトすると、その特定のデバイスのアクセストークンをこのように無効にします。laravelパスポートでユーザーのトークンをすべて無効にする方法はありますか?

$user = $request->user(); 

$value = $request->bearerToken(); 
$id = (new Parser())->parse($value)->getHeader('jti'); 
$token = $user->tokens->find($id); 
$token->revoke(); 

しかし、ユーザーが彼/彼女のアカウントを無効にしたときに、私たちはユーザーがログインしているすべてのデバイスからのすべてのアクセストークンを無効にしたいと思います。 私は文書を通じて見えたが、有益な何かを見つけることができませんでした。ありがとう

答えて

2

パスポートで提供されるHasApiTokensの特性を見てください。 documentationは、この特性をユーザーモデルに追加することを推奨しています。それが提供する方法の1つはtokens()で、Laravel\Passport\Tokenとその形質を使用するモデルの間にhasManyの関係が定義されています。あなたは、与えられたユーザーのトークンのすべてのリストを取得するためにこれを使用することができます:

$userTokens = $userInstance->tokens; 

トークンモデル自体がrevoke方法があります。

foreach($userTokens as $token) { 
    $token->revoke(); 
} 
+0

私たちは、手動で1にREVOKEフィールドを設定しますユーザーIDのoauth_access_tokensテーブル。しかし、これはより良いようです –

関連する問題