2017-03-17 32 views
1

在我們的應用程序中,當用戶註銷時,我們以這種方式使該特定設備的訪問令牌無效。如何使laravel護照中的所有令牌失效?

$user = $request->user(); 

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

但是,當用戶取消激活他/她的帳戶,我們希望所有的訪問令牌從所有用戶登錄的器件。 我通過文檔看了,但沒有發現任何有用無效。謝謝

回答

2

看看護照提供的HasApiTokens特質。 documentation建議將此特徵添加到您的用戶模型。它提供的方法之一是tokens(),它定義了Laravel\Passport\Token和使用該特徵的模型之間的關係。你可以使用這個檢索所有標記的列表給定用戶:

$userTokens = $userInstance->tokens; 

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

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

我們手動設置在該撤銷場1 oauth_access_tokens表用戶標識。但是這似乎更好 –

相關問題