我有一个网络应用程序正在以信息亭模式等待笔记本电脑上的用户。有时,注册失败并且用户会看到错误屏幕 - 我认为是 419 会话已过期。
因此,我假设登录屏幕加载两小时后,会话就会过期(我保留了默认值 120 分钟)config/session.php
)并且 Laravel 不接受来自该页面的任何请求。
我该如何处理这个问题?我知道如何使用 JS 每 110 分钟左右重新加载一次页面,但是我必须检查此时是否正在填写注册表。对我来说这并不是一个干净的解决方案。
是否有任何替代方案,例如当请求来自注册或登录页面时使 Laravel 不那么严格的机制?
如前所述,最简单的解决方案通常是将会话过期时间从默认的 2 小时(非常短)延长。
如果不需要较长的会话,另一种选择是使用 javascript 使会话在浏览器页面打开时保持活动状态。
添加路线在路线/web.php:
Route::post('/keep-alive', function () {
return response()->json(['ok' => true]);
});
然后使用 javascript 定期 ping 这条路由:
setInterval(() => {
axios.post('/keep-alive')
.then(() => {})
.catch(() => {})
}, 600000)
(我使用 axios 发出 POST 请求,因为它包含在默认的 Laravel 安装中,但您可以使用任何东西来发出请求。)
由于请求经过web
中间件组,会话中间件应该运行并保持会话活动。如果浏览器页面关闭、计算机进入睡眠状态等,那么在配置的时间过后,会话仍然会正常过期。
您还可以检查来自 javascript 调用的会话过期响应,然后刷新页面、提示输入凭据,或者在检测到会话过期时执行某些其他操作。如果计算机从睡眠状态恢复运行,则最有可能发生这种情况。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)