是否可以使用Vue.JS SPA刷新Laravel Passport的cookie令牌?

时间:2019-04-05 08:09:56

标签: javascript php laravel vue.js laravel-passport

对于SPA仪表板,我使用Laravel Passport通过CreateFreshApiToken网络中间件提供API令牌。尽管当用户正在使用仪表板中的内容进行操作时,它仍然可以正常工作,但是令牌过期后,他将无权访问/发布数据,这也是预期的行为。有没有办法通过API刷新cookie令牌?例如,例如:每当用户处于活动状态(也就是从api发布或检索某些内容)时,Cookie令牌都会被刷新,因此仅在用户不活动时才会过期。

2 个答案:

答案 0 :(得分:1)

如果您的应用程序发布了短暂的访问令牌,则用户将需要通过颁发访问令牌时提供给他们的刷新令牌来刷新其访问令牌。

Laravel

 $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);

VUEJS

created() {
   this.$cookie.set("token", keyValue, "expiring time")
}

答案 1 :(得分:0)

Passport的RouteRegistrar类中有a route registered个用于此目的。据我所知,Laravel Passport的官方文档中没有记录这很奇怪。

您可以向POST端点执行一个oauth/token/refresh请求,并随时接收新的访问令牌。 该请求不需要有效负载,唯一的要求是您使用Laravel中的传统会话登录。

请注意,因为此路由使用web中间件组,所以在请求新的访问令牌时,会话也会自动延长。