为了账号安全,请及时绑定邮箱和手机立即绑定

防止表单重复提交的方案

防止表单重复提交的方案

LEATH 2019-02-28 06:59:20
1.按钮只能单击一次,加上confirm确认框2.使用token,requestScope和sessionScope确认对比这些就不要再说了,还有其他解决方案吗?
查看完整描述

11 回答

?
HUH函数

TA贡献1836条经验 获得超4个赞

我觉得靠谱的就是验证码一类,或者提交之后重定向,你只在按钮上下功夫,我如果直接从浏览器发起请求不走按钮就没用了。

查看完整回答
反对 回复 2019-03-01
?
桃花长相依

TA贡献1860条经验 获得超8个赞

1:点击按钮后使按钮不可用
借助 js 之力,在提交按钮点击后,即取消按钮的可用性。可以阻挡网络延迟的时候用户反复点击提交按钮,导致多次提交。尤其对 ajax提交的站点有效;
甚至在 disable 按钮后,可以稍微人性化地给出提示,比如使用 jQuery 代码在提交时可以这样:
$(".hisu").attr("disabled","disabled");
$(".hisu").attr("value","正在发布评论...");
2:使用session做标记
session 支持用户整个会话的信息存储,在用户提交表单的同时使用 session 存储用户的提交信息,这种解决方法在业内被称作为令牌法,即token。
基本的步骤是:
1.用户提交数据的时候,创建session,例如创建一个名为 token 值为当前时间戳的 session;
2.存入数据库的逻辑要在存入之前检查是否有名为 token 的 session ,如果有,则返回错误,禁止提交;

这种方法应该算是在根源上杜绝了表单的重复提交。但是最好是能两者结合起来,确保数据安全的前提下还可以保证用户体验。

查看完整回答
反对 回复 2019-03-01
?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

  1. 利用数据库唯一约束
  2. 保证提交操作的幂等性,这样多次提交也不怕
查看完整回答
反对 回复 2019-03-01
?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

一般的重复提交都是前端控制点击事件,后端通过token+session(或者缓存)保证唯一提交;
之前做过一个防ajax重复点击的功能是把URI和用户唯一标识和一个次数标志放在缓存中,使用拦截器每次校验此次请求的合法性,主要是由于我们此次ajax请求业务比较复杂耗时较长,不知道能不能适用你的需求

查看完整回答
反对 回复 2019-03-01
?
呼如林

TA贡献1798条经验 获得超3个赞

前端方案 上一个请求锁 false 请求后变为true 请求没有回来之前retrun掉 回来后再置为false

查看完整回答
反对 回复 2019-03-01
?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

前端处理,点击提交不能再次点击就可以实现
后端处理,判断用户提交频率和表单标示位进行处理

查看完整回答
反对 回复 2019-03-01
?
饮歌长啸

TA贡献1951条经验 获得超3个赞

登录太频繁, 后端可以检测到, 返回一个错误码, 前端就可以提示了, 让他输入验证码后再提交。

查看完整回答
反对 回复 2019-03-01
?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

重复提交也就是在前端限制一下就可以,你总不能限制后台接口不允许重复请求吧?换句话说,如果你的接口复合restful规范,重复请求的结果也是一样的。

查看完整回答
反对 回复 2019-03-01
?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

查看完整回答
反对 回复 2019-03-01
  • 11 回答
  • 0 关注
  • 477 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信