Как получить все токены доступа пользователя в Laravel Passport? - PullRequest
0 голосов
/ 09 апреля 2019

Для фона у нас есть два сервера: 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();
}
...