如何使laravel护照中的所有令牌失效?

问题描述:

在我们的应用程序中,当用户注销时,我们以这种方式使该特定设备的访问令牌无效。如何使laravel护照中的所有令牌失效?

$user = $request->user(); 

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

但是,当用户取消激活他/她的帐户,我们希望所有的访问令牌从所有用户登录的器件。 我通过文档看了,但没有发现任何有用无效。谢谢

看看护照提供的HasApiTokens特质。 documentation建议将此特征添加到您的用户模型。它提供的方法之一是tokens(),它定义了Laravel\Passport\Token和使用该特征的模型之间的关系。你可以使用这个检索所有标记的列表给定用户:

$userTokens = $userInstance->tokens; 

令牌模型本身具有revoke方法:

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

我们手动设置在该撤销场1 oauth_access_tokens表用户标识。但是这似乎更好 –