`
qieyi28
  • 浏览: 152551 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

FORM表单防止重复提交的解决思路

 
阅读更多

         现在分2种场景描述:

         场景一、刷新页面,form表单内容被重复提交。

                 解决思路分2部分,前端页面和后端代码。

          前端页面:在做from 表单提交的时候不使用原生的FROM html语法提交,定义一个js的function来获取数据进行提交。触发事件后,删除提交按钮上的from方法。

          后端代码:防止重复提交。

                方式一、代码提交的 Contraller处理完成后跳转到另一个请求的contraller,在新的contraller中跳转到新的页面。

                方式二、在登录用户的Session中,放置一个随机数作为同步标记,并在初始化新增或编辑页面时就返回到前台页面中,用隐藏域赋值,当form被提交时,form中的同步标记就和Session中的同步标记作对比。在form首次提交的时候,这两个标记应该是一样的。如果标记不一样,那么该form就会禁止提交,一个错误就会返回给用户。在用户提交一个form时,如果按下浏览器中的后退按钮并尝试重新提交同一个form时,标记就会出现不匹配的现象。

       另一方面,如果两个标记值匹配,那么我们就可以确信整个流程是正确的。在这种情况下,Session中的标记值就会被修改为一个新的值,同时允许提交该form。 

      还可以使用这个策略来控制对某些页面的直接访问,就好象上面资源保护中描述的一样。例如,假设一个用户将某个应用的页面A收藏到收藏夹中,而页面A 只允许通过页面B和C访问。当用户直接通过收藏夹来访问页面A,这时页面的访问顺序就是不正确的,这样同步标记将处在一个不同步的状态,或者它根本就不存在。不论怎样,访问都被禁止了。

       

       场景二、同一个用户登录在不同的浏览器里,打开同一个from表单提交数据。

               解决思路:暂时还没想好。谁能提供下解决思路。。。。

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics