微服务接口安全与幂等设计

1.幂等概念

表单 幂等性问题 就是 表单重复提交问题

2.接口什么情况下会有幂等问题?

网络延迟

补偿接口(补偿就是 重试)

3.补偿机制

微服务接口安全与幂等设计
客户端请求,服务器没有及时响应,可能会导致延迟。
客户端会再次请求(就是补偿机制)
采用间隔重试形式 同时防止高并发

4.token

随机生成 临时且唯一的字符串 有有效期 使用**uuid生成
**

5. token防止幂等问题

1.用户在加载index.ftl页面的时候,每次都会生成一个token 放入表单隐藏域
2.提交form 讲token传递到 addOrder请求
3.服务器端在redis查询该token是否存在,如果存在可以执行下面代码。
否则表示: 表单已经重复提交

微服务接口安全与幂等设计

6.获取token

1.生成token 用uuid生成
2.存放到redis
3.返回token 给页面存放

7.查询token 返回布尔值

1.验证传进来token是否为空
2.redis查询该token 如果存在,返回true。否则false
3.删除token: 目的 防止重复提交
4. 若删除返回false,说明高并发
高并发情况下删除,只会有一个删除成功,其他删除失败。redis 保证线程安全 单线程

微服务接口安全与幂等设计
微服务接口安全与幂等设计

8.redis和数据库 保持同步开启事物

比较low方式:同时提交。
建议方式:mq异步 形式订阅 数据库的二进制执行文件