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

Say*_*Das 19 php laravel laravel-passport

在我们的应用程序用户注销时,我们通过这种方式使该特定设备的访问令牌无效.

$user = $request->user();

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

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

Jef*_*ert 37

看看HasApiTokens护照提供的特质.该文件建议增加这一特点给您的用户模型.它提供的方法之一是tokens()定义使用特征的模型和模型hasMany之间的关系Laravel\Passport\Token.您可以使用它来检索给定用户的所有令牌的列表:

$userTokens = $userInstance->tokens;
Run Code Online (Sandbox Code Playgroud)

令牌模型本身有一个revoke方法:

foreach($userTokens as $token) {
    $token->revoke();   
}
Run Code Online (Sandbox Code Playgroud)

  • 我手动撤销了用户的所有以前的令牌,但“oauth_refresh_tokens”表中仍然包含已撤销“0”值的条目。然而,“oauth_access_tokens”表被更新为值“1”以被撤销。你能帮我解决这个问题还是我不​​需要担心这个? (2认同)