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'(从而延长其有效性)?
很感谢任何形式的帮助!
我过去通过创建一个简单的路由(在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