龙空技术网

【后端处理】运维的防止重复提交(一)

字节大叔 19

前言:

当前看官们对“js 防止重复提交”大约比较讲究,同学们都需要知道一些“js 防止重复提交”的相关文章。那么小编在网上搜集了一些对于“js 防止重复提交””的相关内容,希望各位老铁们能喜欢,姐妹们快快来了解一下吧!

这节课讲一下运维的防止重复提交。运维重复提交的实现分为了后端处理和前端处理。后端之前写过一篇博客,实际上面用到的就是拦截器加注警,还有一个repetito repeatable filter加上redis缓存,实现了防止后台重复提交的。

前端的处理比较简单,就是request的点g s,request的点g s里面有一段代码来实现,类似于后端的也是放在缓存里面。

首先来讲后端的事情,它用了几个类:repeat a field,repeat submit intercept,semi url detect intercept,这两个是抽象类,这是继承至抽象类的实现类。还用到的主要是注解与peter summit的annotec注解。

来看待,repeatable filter主要就是做的包装,把ht t p solid瑞特 request可能有几个参数是传过来的参数拿不到,用的rept的request wrap,实际上面用到的就是h t t p several request wrap,这里就是实现了继承的http seventh requests。

前面也有判断,跳到前面去,如果是http seventh request,还有star的一些标准的促进,如果是就把它做成转换,这样转换完了以后就能拿到一些参数了。

再看拦截器,首先讲抽象类拦截器,找一下,点开,难点其实是一个抽象类,主要实现的是实现的pre handle的方法。最重点的就是只处理只有标注repeat some meter注解的,会做一个检查,如果是标注的,继续往下走,如果不标注就过掉了,也不去做检查了。

回到实线内,就是将request set拦截器,最主要的方法就是is repeat的sammit方法。这个方法来看一下,主要实现的功能就是将请求的url和head作为key拼接在一起,将请求过来的post就是把request body,如果是get就是把request parents作为value存储到radis里面去。

存储完了以后,第一次请求如果没有就存储,如果url相同就会去比较parent是否相同,如果parent也相同,去比较时间有没有超过五秒钟,默认是五秒,时间是在repeat sommet里面配的,时间有没有超过时间,如果没有超过就会提示失败了,请求是失败的,不会往下执行了。

如果时间是超过了的或者万有是不对的或者k是查不到的,就往reds里面存一下,前、后端这么一大段代码主要处理的就是这个逻辑。刚才讲错了后端这么一大端代码,就是这个意思,repeat,submit这个方法主要处理的就是这个逻辑。

前端是怎么实现的?前端是通过放到了前端的固定的catch点c型那边去判断一下有没有key,c型object,如果有就会去拿把油里面的object,object里面包括url dat海滩类似于后端处的那段逻辑,比较一下url data,再比较一下时间。

如果时间在一秒以内的就直接返回了错误了,如果时间在一秒以外的就存到c 心里面去,后端由于放在的是reds里面,可能是担心的请求会过多,导致reds也比较容易爆掉。所以后端虽然写的这段逻辑,但是没有一个方法是加了铸界的,但是前端都是会处理的。

来看一下登录一下,更新一下会不会处理。另外还要注意一点,一定要是post或者pot的请求才可以的,其他的请求是不行的。

来看一下这边系统,因为post和pot的请求只有在修改参数的时候,但修改参数的时候可能参数也有变化,这边是把查询也写成了post,点两下看一下,这边就会出现数据正在处理,请勿重复提交。

这节课就讲到这里,谢谢观看。

标签: #js 防止重复提交