如何使laravel护照中的用户的所有令牌无效?

时间:2017-03-17 07:31:35

标签: php laravel laravel-passport

在我们的应用程序中,当用户注销时,我们会以这种方式使该特定设备的访问令牌无效。

$user = $request->user();

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

但是当用户停用他/她的帐户时,我们希望使用户登录的所有设备的所有访问令牌无效。 我查看了文档,但没有找到任何有用的内容。感谢

1 个答案:

答案 0 :(得分:29)

查看护照提供的HasApiTokens特质。 documentation建议将此特征添加到您的用户模型中。它提供的方法之一是tokens(),它定义hasMany与使用特征的模型之间的Laravel\Passport\Token关系。您可以使用它来检索给定用户的所有令牌列表:

$userTokens = $userInstance->tokens;

令牌模型本身有revoke方法:

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