laravel - Laravel 护照刷新令牌
问题描述
我正在使用使用 Passport 进行身份验证的 Laravel 5.5 版。我已成功创建令牌并可以使用auth:api
中间件访问它。
但是,每当用户登录系统时,它都会为该用户创建新令牌。我只想刷新用户最后一个令牌并将其发回,而不是创建一个新令牌。
我已使用以下代码生成身份验证令牌
$token = $user->createToken('string-'.$user->id)->accessToken;
它生成带有 1075 个字符的令牌,但是当我检查数据库表oauth_access_tokens
时,它向我显示了带有 80 个字符的令牌。
如何使用 80 个字符的令牌获取最后生成的令牌并刷新它并将其发回?
提前致谢
解决方案
如果您的应用程序发出短期访问令牌,用户将需要通过在发出访问令牌时提供给他们的刷新令牌来刷新他们的访问令牌。在本例中,我们将使用 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 属性包含直到访问令牌过期的秒数。
推荐阅读
- python - 了解嵌套字典的 .get() 方法
- javascript - 我可以将 Vue 输出保存为 Javascript 数组吗?
- spring - Spring boot 不断收到“需要一个 bean,但找到了 10 个”,尽管我只声明了一个服务
- azcopy - azcopy v10 - 仅当目标文件不存在时才复制到目标
- python - 如何使用唯一代码从 CSV 文件中读取一行?
- docker - 为什么我应该使用 docker 镜像存储库而不是从 Dockerfile 构建?
- c++ - C++ 难以在单例类中创建类的实例
- javascript - 如何使用 mssql 在 SQL Server 中创建可重用的预处理语句?
- java - MVP Clean Architecture - 计算和非数据相关任务属于哪里?
- jquery - jQuery选择一个带有特定单词的href