如何使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();
}
我们手动设置在该撤销场1 oauth_access_tokens表用户标识。但是这似乎更好 –