对于后台,我们有两个服务器:oauth服务器(用于发出令牌并安装了laravel护照),以及api服务器(用于处理前端请求)。为了最大程度地减少请求,我们将访问令牌缓存在api服务器上,这样就无需从api服务器向oauth服务器发出请求。
但是,在紧急情况下,我们希望快速使用户的所有令牌失效并从api服务器的缓存中删除令牌。
我已经弄清楚了如何使用户的所有令牌无效,但是事实证明要获得实际的访问令牌值很困难。有没有办法获取用户的访问令牌并将其返回给api服务器?
作为参考,以下是我目前必须使用户令牌无效的代码:
use App\User;
public function invalidate_sessions($user_id) {
$user = User::find($user_id);
$tokens = [];
foreach ($user->tokens as $token) {
$token->revoke();
// this doesn't work
$tokens[] = $token;
}
$api_server = config('auth.api_server');
$http = new \GuzzleHttp\Client;
$response = $http->post("{$api_server}/api/invalidate_sessions", [
\GuzzleHttp\RequestOptions::JSON => $tokens
]);
return (string)$response->getBody();
}