如何使用Passport刷新API调用上的laravel_token

Mat*_*ias 6 php jwt laravel vuejs2 laravel-passport

我用Laravel 5.6,Vue 2.5和Laravel Passport创建了一个SPA,效果很好.我非常喜欢Laravel和Vue,因为他们使用API​​构建SPA非常容易且非常有趣.

按照文档中的描述设置Laravel Passport之后,登录以及对API的调用将根据"laravel_token"正常工作,该'laravel_token'已正确返回并存储在cookie中.

但是,我的问题是我的用户在很长一段时间内都在使用该应用程序,而无需重新加载页面,而只是使用axios执行针对API的调用.不知怎的,Laravel没有刷新API调用中的'laravel_token'(以及相应的cookie)(当我调用'web'路径时,它会这样做).因此,'laravel_token'在某个时间点到期,用户需要再次登录.

如何通过每次调用来自axios的API路径强制Laravel刷新'laravel_token'(从而延长其有效性)?

很感谢任何形式的帮助!

Tra*_*itz 2

我过去通过创建一个简单的路由(在web中间件组中)来解决类似的问题,以在浏览器选项卡打开时保持会话处于活动状态。

在routes/web.php中:

Route::get('/keep-alive', function () {
    return response()->json(['ok' => true]);
})->middleware('auth');
Run Code Online (Sandbox Code Playgroud)

然后使用 javascript 定期 ping 这条路由:

setInterval(() => {
    axios.get('/keep-alive')
        .then(() => {})
        .catch(() => {})
}, 600000)
Run Code Online (Sandbox Code Playgroud)

我在这里详细介绍一下:https ://stackoverflow.com/a/57290268/6038111