首页 > 解决方案 > Laravel 护照刷新令牌

问题描述

我正在使用使用 Passport 进行身份验证的 Laravel 5.5 版。我已成功创建令牌并可以使用auth:api中间件访问它。

但是,每当用户登录系统时,它都会为该用户创建新令牌。我只想刷新用户最后一个令牌并将其发回,而不是创建一个新令牌。

我已使用以下代码生成身份验证令牌

$token = $user->createToken('string-'.$user->id)->accessToken;

它生成带有 1075 个字符的令牌,但是当我检查数据库表oauth_access_tokens时,它向我显示了带有 80 个字符的令牌。

如何使用 80 个字符的令牌获取最后生成的令牌并刷新它并将其发回?

提前致谢

标签: laravellaravel-5.5laravel-passportlaravel-authorization

解决方案


如果您的应用程序发出短期访问令牌,用户将需要通过在发出访问令牌时提供给他们的刷新令牌来刷新他们的访问令牌。在本例中,我们将使用 Guzzle HTTP 库来刷新令牌:

$http = new GuzzleHttp\Client;

$response = $http->post('http://your-app.com/oauth/token', [
    'form_params' => [
        'grant_type' => 'refresh_token',
        'refresh_token' => 'the-refresh-token',
        'client_id' => 'client-id',
        'client_secret' => 'client-secret',
        'scope' => '',
    ],
]);

return json_decode((string) $response->getBody(), true);

/oauth/token路由将返回包含 access_token refresh_token、 和expires_in属性的 JSON 响应。expires_in 属性包含直到访问令牌过期的秒数。


推荐阅读