如何使 laravel 护照中用户的所有令牌失效?
How to invalidate all tokens for an user in laravel passport?
在我们的应用程序中,当用户注销时,我们会以这种方式使该特定设备的访问令牌无效。
$user = $request->user();
$value = $request->bearerToken();
$id = (new Parser())->parse($value)->getHeader('jti');
$token = $user->tokens->find($id);
$token->revoke();
但是当用户停用 his/her 帐户时,我们希望使用户登录的所有设备的所有访问令牌失效。
我查看了文档,但没有找到任何有用的东西。谢谢
查看 HasApiTokens
trait provided by passport. The documentation 建议将此特征添加到您的用户模型。它提供的方法之一是 tokens()
,它定义了 Laravel\Passport\Token
和使用特征的模型之间的 hasMany
关系。您可以使用它来检索给定用户的所有令牌列表:
$userTokens = $userInstance->tokens;
令牌模型本身有一个revoke
方法:
foreach($userTokens as $token) {
$token->revoke();
}
这对我有用:
use Laravel\Passport\Token;
Token::where('user_id', $user->id)
->update(['revoked' => true]);
在我们的应用程序中,当用户注销时,我们会以这种方式使该特定设备的访问令牌无效。
$user = $request->user();
$value = $request->bearerToken();
$id = (new Parser())->parse($value)->getHeader('jti');
$token = $user->tokens->find($id);
$token->revoke();
但是当用户停用 his/her 帐户时,我们希望使用户登录的所有设备的所有访问令牌失效。 我查看了文档,但没有找到任何有用的东西。谢谢
查看 HasApiTokens
trait provided by passport. The documentation 建议将此特征添加到您的用户模型。它提供的方法之一是 tokens()
,它定义了 Laravel\Passport\Token
和使用特征的模型之间的 hasMany
关系。您可以使用它来检索给定用户的所有令牌列表:
$userTokens = $userInstance->tokens;
令牌模型本身有一个revoke
方法:
foreach($userTokens as $token) {
$token->revoke();
}
这对我有用:
use Laravel\Passport\Token;
Token::where('user_id', $user->id)
->update(['revoked' => true]);