使用token令牌控制接口幂等性
使用spring拦截器,注解,redis实现。
前端请求表单设置id=token的隐藏(hedden)输入框,使用ajax请求时先获取token输入框的值,
若值为空表示首次提交,先请求获取服务器token的接口(后端服务器将token值加入redis缓存,设置过期时间15min),
返回后为隐藏域赋值。然后在表单提交时带上token参数值,若首次提交请求,后台处理逻辑判断token
存在于redis缓存中表示首次请求,验证通过并删除redis中对应的token值(若业务逻辑处理失败出现异常再将token值放入redis中),
后续若重复请求表示发现缓存中token值不存在,提示(长时间未提交表单,表单过期请刷新【较少发生】)或请勿重复提交!
实现代码: https://gitee.com/mint31/barry-spring-boot/tree/master/src/main/java/com/example/demo/autoidempotent
参照:
https://blog.csdn.net/weixin_42214548/article/details/102557531?utm_source=app
https://blog.csdn.net/jiahao1186/article/details/91793691
https://mp.weixin.qq.com/s?__biz=Mzg2MjEwMjI1Mg==&mid=2247493373&idx=1&sn=6953f10125945ad6105d603cf0750d6b&chksm=ce0e517ef979d868e4f33b739a9f02483f91af2c6337b1e8d899c97f6df2556592a85a9d43ad&mpshare=1&scene=23&srcid=06163VvcbphgUYVKiDNtVXR6&sharer_sharetime=1592308833640&sharer_shareid=31a887b367cac7d354789a3c04c26465#rd