3 回答
TA贡献1883条经验 获得超3个赞
如前所述,最简单的解决方案通常是将会话过期时间从默认的 2 小时(非常短)延长。
如果不需要更长的会话,另一种选择是使用 javascript 使会话保持活动状态,只要浏览器页面处于打开状态。
在routes/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 调用的会话过期响应,然后刷新页面、提示输入凭据或在检测到会话过期时执行一些其他操作。如果计算机从睡眠状态恢复运行,则最有可能发生这种情况。
TA贡献2051条经验 获得超10个赞
您注意到自己可以在 中更改会话时间config/session.php。你有什么不想改变的理由吗?
或者,假设这不是可在万维网上访问的应用程序并且仅供 Kiosk 使用,您可以完全排除某些路由需要 CSRF 令牌;
编辑**$except**VerifyCsrfToken中间件的属性;
protected $except = [
'stripe/*',
'http://example.com/foo/bar',
'http://example.com/foo/*',
];
从Laravel 文档中获取的信息。
- 3 回答
- 0 关注
- 181 浏览
添加回答
举报