如何在Laravel Passport中获得用户的所有访问令牌?

时间:2019-04-09 19:08:51

标签: php laravel oauth laravel-passport

对于后台,我们有两个服务器: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();
}

0 个答案:

没有答案