表单重复提交的解决办法

本文探讨了如何通过在后端生成并存储Token,配合Redis实现表单提交的唯一性验证。通过原子操作确保同一token只允许使用一次,防止重复提交问题。关键点包括获取Token、校验删除过程的原子性以及前端处理失败情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文章只说一些简单的思路
打开表单之前先请求后端获取token,后端生成token,可以使用用户名+uuid的方式,并将token放入redis中,key和value都一样就可以,或者value随意写(value不重要),用户填写完表单后进行提交,token的校验以及删除可以写在过滤器或拦截器中,具体的思路如下:要实现一个token在服务端只能使用一次,当用户的请求过来的时候,先判断redis是否存在token,存在则删除token,这个判断删除的过程必须确保原子性,可以写lua脚本交给redis执行,试着想象以下这种情况,表单提交了两次,两次的token一致,一个token进入redis进行判断后还未来得及删除,另一个token恰好也判断成功,此时将会出现重复提交,如果redis不存在token,返回表单重复提交的信息,然后,前端需要在请求结束后对请求结果进行判断,如果请求成功或者后端返回表单重复提交的信息,前端什么都不做,如果请求失败返回其他的信息(可能是后端的参数检验),前端需要再次获取token,让用户可以再次提交表单完成表单的正常保存。
只是自己的一些想法,欢迎讨论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值