在我们的日常业务中,有一些业务我们会需要我们限制用户重复点击提交。
例如,在我们的订单系统中,我们应该防止用户重复点击下单,避免重复下单。
1. 前端的限制
首先需要前端人员的配合,页面样式只需要点击一次,点击一次就使用样式禁止点击[但是,无法真正防止重复提交,还得靠后端的限制]。
2. 后端的限制
后端可以采用token方案:
- 当前页面第一次加载时,请求服务端获取唯一token
- 服务端生成token,并放入redis,接着返回token给客户端(可以放在cookie中或者header中,如果放在header中,需要前端帮忙)
- 客户端获取token,存入当前的页面
- 提交的时候的需要将页面的token提交给服务器
- 服务器获得页面的token和redis中的进行比较,比较同时删除token
String token = redis.get("token");
redis.delete("token");
String token1 = request.get("token");
if(token.equals(token1)){
boolean flag = redisTemplate.opsForValue().setIfAbsent(token,111);
if(flag){
// 执行业务
}
}