2009-05-19 89 views
6

精确复制How to handle multiple submissions server-side避免双重表单提交

在手的总任务:防止双表单提交在基于多用户网络应用程序。考虑财务交易。

我有两种方法可以串联使用:

  1. 的JavaScript按钮
    • 的禁用缺点:如果已禁用JavaScript
  2. 后端verfication不工作 - 看看这种用户的最后一次请求是在多久以前发出的,如果不是很久以前就发出错误
    • 缺点:如果两次提交足够接近在一起,每个可能无法知道的其他

我要寻找主题专家贡献他们的最佳实践,以及深奥的窍门。可以是任何语言和框架,但Django具有特定的兴趣。网上已经写了很多关于手头的任务,但最好在这里展示最佳实践。

+0

已关闭,但类似的问题在哪里?双重提交预防标记不会产生完全相同的问题情形。 – vsingh 2010-03-26 15:39:28

回答

8

常用的解决方案是每次生成表单时在服务器上生成一个令牌。将令牌存储在服务器上,将其作为隐藏字段添加到表单中,并在使用该令牌获取表单提交后将其删除。

如果您在没有有效令牌的情况下获得表单提交,这意味着表单已经提交并且忽略它。

这为将XSRF保护添加到您的项目中提供了额外的优势。