springmvc中的重复提交问题 20C

如图:下面是网络中找到的方法,测试下来发现几个问题,请大神们帮忙下,谢谢。
原理:自定义拦截器,在打开页面和保存页面时添加注解方式来验证重复提交。
问题1:因为都是token,所以当同一台电脑打开2个不同路径页面时,陆续保存会报错。
问题2:当2台电脑用同一用户打开相同路径的页面时,保存时并没有验证重复,导致重复提交了。
原因我知道为什么,现怎么解决这2个问题呢,谢谢,给个思路。
图片说明

mvc

5个回答

这两个问题都是因为使用了Session,具体的可以去看看session的机制。
防重复点击可以在前端页面按钮限制,点击一次后置为不可用状态,或者使用倒计时机制,比如发送验证码的按钮。

gf0515
Fatal Error 后端验证的话可以限制访问频率,比如每隔1秒才可以访问一次
一年多之前 回复
qq_24941261
董向晴 重复提交前端验证和后台验证,前端已经防止了,我要从后台防止重复。
一年多之前 回复

后端也可以用分布式锁来控制

可以在进入前端页面时先生成一个token存到session种并返回给前端页面,前端页面提交,在后台获取前端页面提交的token值,重复提交有三种情况:
1.客户端token(页面提交的token)不存在,这种情况可能是直接刷新提交页面造成
2.服务器端token不存在,这种情况可能是用户从提交页面在浏览器返回后再提交
3.服务器token与客户端token不一致
通过服务器token与客户端token值相等来防止重复提交

第一个问题,你不能所有的保存页面用同一个key保存session,比如A页面叫atoken,B页面叫btoken,这样就不会相互覆盖。
第二个问题,实际上就是控制用户登录问题了,不能重复登录,可以记录IP,同一用户只能同一个IP

重复提交问题也可以在后台解决,首先不是每个接口都需要处理重复提交的,后台可以通过一个一个细粒度的锁来实现,没有必要用拦截器,也比较浪费资源

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!