11 回答
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 ,如果有,则返回错误,禁止提交;
这种方法应该算是在根源上杜绝了表单的重复提交。但是最好是能两者结合起来,确保数据安全的前提下还可以保证用户体验。
TA贡献1900条经验 获得超5个赞
一般的重复提交都是前端控制点击事件,后端通过token+session(或者缓存)保证唯一提交;
之前做过一个防ajax重复点击的功能是把URI和用户唯一标识和一个次数标志放在缓存中,使用拦截器每次校验此次请求的合法性,主要是由于我们此次ajax请求业务比较复杂耗时较长,不知道能不能适用你的需求
TA贡献1804条经验 获得超2个赞
重复提交也就是在前端限制一下就可以,你总不能限制后台接口不允许重复请求吧?换句话说,如果你的接口复合restful规范,重复请求的结果也是一样的。
添加回答
举报