Laravel 如果当前请求尚未完成,则阻止用户发送新请求

Laravel 如果当前请求尚未完成,则阻止用户发送新请求,laravel,request,laravel-5.4,Laravel,Request,Laravel 5.4,如果当前请求尚未完成,Laravel中是否有方法阻止用户发出新请求?我想防止用户提交多个请求,因为他们可能会觉得由于互联网连接速度慢,进程被挂起。在一天结束时,每个请求都将创建单独的数据库事务,并绕过验证检查,从而产生重复的记录——如果事务同时处理。请注意,请求不是ajax请求,而是表单提交。在评论中有一个很好的建议,即在HTTP请求未返回响应时禁用提交按钮。我个人喜欢 然而,如果您想要另一个解决方案,您可能需要一个类似于CSRF令牌的令牌来标识每个唯一的请求。然后,您可以仅在服务器端第一次接受

如果当前请求尚未完成,Laravel中是否有方法阻止用户发出新请求?我想防止用户提交多个请求,因为他们可能会觉得由于互联网连接速度慢,进程被挂起。在一天结束时,每个请求都将创建单独的数据库事务,并绕过验证检查,从而产生重复的记录——如果事务同时处理。请注意,请求不是ajax请求,而是表单提交。

在评论中有一个很好的建议,即在HTTP请求未返回响应时禁用提交按钮。我个人喜欢


然而,如果您想要另一个解决方案,您可能需要一个类似于CSRF令牌的令牌来标识每个唯一的请求。然后,您可以仅在服务器端第一次接受令牌,并在此之后使用相同的令牌阻止所有后续请求。

为什么不在表单提交一次后,在页面刷新之前禁用提交按钮(或其他机会)?您可以在jQuery/JavaScript中使用
.submit()
事件。我正在使用datatables编辑器弹出窗口进行数据提交,并在提交时关闭编辑器。但是,在连接速度较慢的情况下,用户往往会一次又一次地重复该过程,创建多个请求。那么,如果您正在侦听提交事件,为什么不以某种方式阻止用户重新打开弹出窗口呢。只是通过编程阻止他再次发送请求,并在完成之前让他知道。最终走上了这条路线。。一旦我的请求被提交并且编辑器关闭,我将禁用所有提交按钮,并侦听初始请求以发送响应。一旦回复被发回,我就会启用提交按钮。我当时没有选择token选项(虽然在极少数情况下,用户可能会提交多次有效的提交,因此在处理下一次请求之前等待第一次请求完成将确保双重提交始终有效。感谢@D.Petrov的建议