Для фона у нас есть два сервера: oauth-сервер, который выдает токены и на котором установлен паспорт laravel, и сервер API, который обрабатывает запросы для внешнего интерфейса.Чтобы свести к минимуму запросы, мы кэшируем токен доступа на сервере API, поэтому нет необходимости отправлять запрос на сервер oauth с сервера API.
Однако в случаев экстренных случаях мы хотим быстро сделать недействительными все токены пользователя и удалить токены из кэша на сервере 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();
}