对于SPA仪表板,我使用Laravel Passport通过CreateFreshApiToken
Web中间件提供API令牌。它工作正常,尽管当用户在仪表板中处理内容时,他在令牌过期后将无法访问检索/发布数据,这也是预期的行为。有没有办法通过 API 刷新 cookie 令牌?例如:每次用户处于活动状态(即从 API 发布或检索某些内容(时,cookie 令牌将被刷新,因此它仅在用户处于非活动状态时过期。
如果应用程序颁发短期访问令牌,则用户需要通过颁发访问令牌时提供给他们的刷新令牌刷新其访问令牌。
拉拉维尔
$http = new GuzzleHttpClient;
$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);
维耶斯
created() {
this.$cookie.set("token", keyValue, "expiring time")
}
Passport的RouteRegistrar
类为此目的注册了一条路线。据我所知,奇怪的是,它在拉拉维尔护照的官方文件中没有记录。
您可以对oauth/token/refresh
终端节点执行POST
请求,并随时接收新的访问令牌。此请求不需要有效负载,唯一的要求是您使用 Laravel 中的传统会话登录。
请注意,由于此路由使用 web
中间件组,因此在请求新的访问令牌时,会话也会自动延长。