对于表单重复提交对于大家来说都不陌生,就是说当我们在进行表单提交时候,有可能出现网络延迟的情况,这个时候我们又点击按钮进行了表单的重复提交,对于以下的情况,我们可能就只是进行了两次的登录,对于这种情况问题还不是很大。 对于重复提交我们也有一些的解决方案—-前端验证: 注意:但是以上的情况对于重复刷新页面,或者是使用url直接提交请求信息还是会出现问题。所以这里我们介绍一下对于使用token字符串进行验证提交。 对于以下时序图我们进行讲解: 首先我们使用到postman来进行正式提交之前的提交获取token字符串的提交,可以看到的是,返回给我们正确的信息,这个token字符串我们会在下一次请求时候带上,同时也存在与Httpsession中。 点击第一次发起请求,因为我们的Httpsession中保存了对应的session,此时我们又进行一个上传,可以看到返回的是正确信息。 对于我们第一次提交时候可能会出现网络延迟,用户刷新页面,重复提交,这个时候这个提交到达服务器,生成一个token信息保存在HttpSession中,然后用户正式提交表单等,发现此时提交带的token信息(是我们一次提交两次请求的第一次请求返回的token)和HttpSession中token信息相同(因为同时也保存在了Httpsession中),表示是同一次提交,后台进行处理,然后将token删除。当第一次提交到达服务端以后,发现的是此时的token信息和HttpSession信息不想等,或者说HttpSession中已经不存在token,就绝对不会将此次的提交给上传上去,就可以防止重复提交。以上就是模拟使用token来防止重复提交,这里也只是提供一个小小的思想,有什么错误的地方还望大家能够指证出来。
介绍
但是对于以下的情况,当我们在进行第一次转账时候,输入了密码,却发现并没有得到任何的响应,于是又进行了一次的转账,这个时候就可能会导致两次的转账的出现,这种情况来说是比较严重的。
token字符串
编程实现
@RestController @RequestMapping("/token") public class tokenController { @RequestMapping("/save") public R save(HttpServletRequest request){ HttpSession session=request.getSession(); String token= UUID.randomUUID().toString(); session.setAttribute("token",token); return R.ok().put("token",token); } //R 是本项目自己封装的一个类 不用在意。 @RequestMapping("/remove") public R remove(HttpServletRequest request){ HttpSession session=request.getSession(); session.removeAttribute("token"); return R.ok(); } }
@RestController @RequestMapping("/test") public class textController { @RequestMapping("demo1") public R save(HttpServletRequest request, @RequestParam Map<String,Object> map){ HttpSession session=request.getSession(); String token=""; if(session.getAttribute("token")!=null){ token=session.getAttribute("token").toString(); } if(!token.equals(map.get("token").toString())){ return R.error("token error"); } session.removeAttribute("token"); // 写上自己的业务代码。 return R.ok(); } }
然后我们相同url点击第二次请求,发现请求出现错误
后记
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算