ssm+拦截器做到利用token令牌机制防止数据重复提交

接口幂等性 token机制(防重令牌) 基于springboot2 redis实现 请提供示例代码 在基于Spring Boot 2和Redis实现防重令牌的幂等性控制时,你可以使用Redis存储令牌信息,并在接口请求时验证令牌的有效性。检查令牌的有效性,如果有效则处理业务逻辑,然后可以选择将令牌从Redis中删除,确保同一个令牌在有效期内只能使用一次。请注意,这只是一个简单的示例,实际应用中可能需要根据具体业务需求进行更详细的处理。在这个例子中,当客户端发起一个请求时,需要携带一个令牌。在你的Controller中,你可以使用。在Controller中,首先通过。 阅读详情

本人前段时间在公司参数了一个商城的项目,负责购物车+订单等一系列模块,但是这一块有个很大的隐患就是数据重复提交的问题,比如在下订单的时候以及确认购买付款的时候如果用户因为某些原因在短时间内连续点击了很多次,那么就会造成数据重复提交,然后本人也专门去网上找了一些资料,然后集合自身的代码,胜利解决了此问题,本篇博文目的只是为了记录下这个东西,一方面是自己能把某一功能自己写下来的话可以加深自己的理解,另一方面也是想可以帮助到有需要的人,本篇博文为原创,如有问题,请私信 欢迎指正~


以前再没用spring,用Struts2的时候也做过类似的功能,当时实现token令牌机制是在jsp页面生成一个随机数,然后放进session中保存,并把这个随机数当做请求的参数传到后台,后台获取到这个参数token之后再从session中通过相同的参数名获取到session中的token,然后两个token判断一下,相同就是同一次请求,并立即删除session中的token,这样的话 你通过页面回退之后再点击提交,session中就已经不存在这个token,就无法重复提交了。


这次的逻辑是一样的,只不过换了一种实现的方式,用自定义注解+拦截器实现,具体如下:

  1. 先自定义一个注解类,元注解@Target和@Retention即可,然后自定义两个方法,方法名随便但不要随便,一个是用来标识生成token,一个是删除
  2. 再自定义一个拦截器,基本逻辑是利用反射,获取到需要被拦截的请求,然后判断一下,比如你在某个请求需要做防止重复提交,那么就在进入该页面的controller的方法上,使用你第一步自定义的注解,并设置save()为true,然后拦截器就会判断,如果为true就表面需要防止重复提交,就会随机生成一串东西,可以自定义 也可以用uuid,然后放进session中,并起个参数名(和之前直接在jsp上生成是一样的道理)。然后在最终提交数据的controller方法上使用remove().true,这样就会进行两个token的一系列的判断
  3. 第三步就是配置拦截器
  4. 接下来就是关键,在进入到你需要提交的页面的controller方法上使用你的自定义注解
  5. 在提交数据的controller方法上删除
  6. 最后一个步骤,首先需要再页面获取到session中的token并放入隐藏域中,最后如果你是ajax提交的数据,记得一定要把token当做参数提交上去,否则后台无法获取到你页面提交的token值,就无法和session中的作比较
基本上大致步骤和代码就是这些。



微调BERT进行中文文本分类任务(Pytorch代码实现) BERT(Bidirectional Encoder Representation from Transformers)是2018年10月由Google AI研究院提出的一种预训练模型。其模型结构由多层Transformer的Encoder堆叠而成,在大规模语料中进行预训练后,迁移到下游任务,仅进行参数微调训练,就能显著提升性能。本文聚焦于微调中文BERT进行新闻标题分类任务的代码实现。 阅读详情

相关推荐

静态时序分析(STA)_深入解析Data to Data Checks的零周期挑战

本文深入解析了静态时序分析(STA)中Data to Data Checks的核心概念与零周期挑战。重点探讨了当Setup要求值超过时钟周期时,工具如何调整发射沿,并导致Hold检查的发射与捕获沿“分裂”这一反直觉现象。文章通过案例详细解读了时序报告,并提供了通过调整约束或接受多周期保持两种策略来应对这一挑战,帮助工程师正确理解和处理此类复杂时序检查。

weixin_29204205的博客 350

防止表单重复提交token

防止表单重复提交token

m0_47769271的博客 2442

Labview及NI-USRP驱动安装教程

软件下载 安装使用的LabVIEW2018及NI-USRP驱动程序已上传,下载地址: 天翼云盘链接 (访问码:oc33) 百度网盘链接 (提取码:88mi) (注:天翼云盘下载不限速) LabVIEW2018安装步骤 右键软件压缩包选择解压至LabVIEW2018 选中文件,鼠标右击选择以管理员身份打开2018LV-WinChn.exe文件。 点击确定。 点击Unzip解压。 点击确定。 点击下一步。 填写任意信息后,点击下一步。 点击下一步。 点击浏览更改安装路径建议安装到除C盘以

dadapongi6的博客 2万+

使用token拦截器组织重复提交的问题

每次访问时token都会在session生成一个随机数,提交后会检验是否随机数相同若相同则提交成功并且在服务器端将随机数消掉,再次提交时虽生成了session但是服务器端已经没有那个随机数,就能完成组织重复提交的问题。。。

816

YOLO26-seg分割优化:FPN涨点&轻量化篇 |多级特征融合金字塔(HS-FPN),助力小目标检测

​​​​​摘要:本研究对Ultralytics YOLO26进行了全面分析,重点阐述了其关键架构改进及其在实时边缘目标检测中的性能基准测试。YOLO26于2025年9月发布,是YOLO系列最新、最先进的成员,专为在边缘及低功耗设备上实现高效、精确且易于部署的目标而构建。本文依次详述了YOLO26的架构创新,包括:移除了分布焦点损失(DFL);采用端到端的无NMS推理;集成了渐进损失(ProgLoss)与小目标感知标签分配(STAL);以及引入了用于稳定收敛的MuSGD优化器。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 282

时间序列预测 — 预测数据集(负荷、风电、光伏、销量等)

GEFCom2014 “负荷预测数据”为竞赛的公共数据集,GEFCom2014 的负荷预测轨迹为概率负荷预测。

几度春风里的博客 2万+

java防止重复提交的方法

这样,即使用户多次提交表单,由于令牌已经被移除,后续的请求都会被拒绝。在处理完POST请求后,服务器不直接返回响应,而是返回一个重定向(REDIRECT)到GET请求的响应。这样,即使用户刷新页面,也只会重复发起GET请求,而不会重复提交表单。在服务器端可以设置一定的限制,例如限制同一个用户在一定时间内只能提交一次表单。在提交成功后,可以禁用提交按钮,防止用户多次点击。在前端页面中,可以通过禁用提交按钮或者在提交时添加遮罩层来防止用户重复提交。在后端代码中,可以通过生成唯一的token来防止重复提交。

花生日记 7604

Qt + windows + Linux+QtInstallerFramework打包教程

本文介绍了使用Qt Installer Framework在Windows和Linux系统下打包Qt应用程序的完整教程。Windows部分详细说明了从下载安装框架、配置环境变量、生成release版本,到创建安装包目录结构和修改配置文件的完整流程。Linux部分则重点讲解了环境变量设置、桌面应用配置(.desktop文件)以及两种打包方案:一种使用linuxdeployqt生成AppImage文件,另一种采用类似Windows的安装包方式。教程提供了关键配置文件(config.xml、package.xml

Qt历险记,专注Qt技术,三年医疗设备研发经验,1年机器视觉研发经验,半年柔性传感研发经验。 516

java如何防止表单重复提交:使用Token机制防止表单重复提交

Token机制是在表单提交时,将一个随机字符串设置到Session中,然后将这个字符串放到表单中,当表单提交时,将Session中的字符串和表单中的字符串进行比较,如果不一致,则表示表单已经被重复提交。Post-Redirect-Get模式是在表单提交时,将表单数据提交到服务器,服务器处理完成后,重定向到一个新的页面,而不是直接返回结果页面,这样就可以避免表单重复提交的问题。// 服务器处理完成后,重定向到一个新的页面。// 表单提交时,验证token。// 将字符串放到表单中。// 执行表单提交操作。

weixin_19970108018的博客 1027

如何在多 GPU 配置上运行 Unsloth:数据并行或模型并行

当工作负载受限于内存(模型或批次无法放入单张显卡)、或受限于计算且计算与通信比率较高时(即每块 GPU 的额外计算量超过同步参数的开销,如在 DDP 中,或超过传递激活值的开销,如在模型并行中),多 GPU 配置才开始显现优势。在松散连接的显卡上(尤其是 PCIe 版本的 H100 或 A100),额外的设备间数据传输会导致性能显著低于单 GPU 运行。让我们厘清概念,明确说明如何通过模型并行(将模型拆分到多个 GPU)或数据并行(在每个 GPU 上复制模型)来跨多 GPU 运行 Unsloth。

人工智能领域专家 646

使用Matlab与V-REP联合仿真

在Matlab中,我们可以使用V-REP提供的远程API(Application Programming Interface)来连接到V-REP仿真环境。为了连接Matlab与V-REP,我们需要在Matlab中添加V-REP的远程API函数库。你可以根据具体的需求编写Matlab脚本来控制V-REP场景中的机器人,并进行系统建模和仿真。一旦成功连接到V-REP,我们可以使用Matlab来控制V-REP场景中的机器人。在本文中,我们将介绍如何使用Matlab与V-REP进行联合仿真,并提供相应的源代码。

HackMasterX的博客 1853

汇总:2. SSH、SSM五大框架

c3p0/druid连接池 http://www.cnblogs.com/niejunlei/p/5977895.html 阿里巴巴Druid数据源,史上最强的数据源,没有之一 http://blog.youkuaiyun.com/amen_wu/article/details/79139877 DRUID连接池的实用 配置详解(开启SQL监测功能) https://www.cnblogs.com/w...

北京Java青年 3851

CATIA二次开发一一一获取属性的几种方法

这些方法覆盖了CATIA CAA开发中属性操作的典型场景,开发者可通过类型判断实现递归遍历、跨文档关联等复杂逻辑。此方法用于遍历对象的所有属性,获取属性键后可通过类型判断选择后续处理方式。适用于处理嵌套对象或关联对象的场景(如几何特征关联制造特征)。适用于简单属性值的直接读取(如版本号、状态标识等)。用于处理多值属性(如多选参数、装配体子件列表等)。用于处理跨文档引用(如零件关联图纸文件)。

工业软件开发 431

AOP+自定义注解token令牌和参数防重复提交实战

重复提交带来的问题 会导致表单重复提交,造成数据重复或者错乱 核心接口的请求增加,消耗服务器负载,严重甚至会造成服务器宕机 通过引入redis服务端token令牌或者参数AOP方式达到防重复提交

点滴记忆,分享成长之路 3210

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

token防止重复提交

客户端获取页面时请求一次获取token的接口,服务器端生成随机token,并将其存放在session或者redis中,并将其返回给客户端 客户端请求放重复提交接口时要带上此token(一般是存放至请求头中),服务器端将检验此token,若token能够在session或redis中查找到,则删除此token并放行接口,若没能查找到,说明不是第一次提交,则拒绝放行 使用spring时可以利用AOP完成防重 流程图: ...

qq_42842433的博客 2038

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

SpringBoot使用防重Token令牌实现简单的接口幂等

SpringBoot使用防重Token令牌实现简单的接口幂等

qinxun2008081的博客 689

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

解决:并发 获取token值被覆盖,防止重复获取token

在调用接口是 接口里是有token的 但是 如果并发 token值被覆盖,就会造成其他接口报错, 其实有很多办法 比如 存放到redis 或者数据库里 但是token有过期时间 token会失效 所以需要更新,这样的其实比较 费事的, 解决: 其实一个定时任务就可以解决 首先写个静态方法 获取 token 加上定时器让他2分钟或者1分钟执行一次 ,这样也不用担心token会失效了,因为我每个2分...

T 5055

token防止表单重复提交,token 原理

1:显示表单的那个 action 中使用 createToken() 生成一个随机的 token值,并存放在服务端(session或者cache中),并且传递一份到页面中 2:表单页面使用一个隐藏表单域获取后端传过来的 token值,该表单页面提交时会将此 token 值一同提交到后端 3:在表单页面提交到的 actioin 中使用 validateToken() 将服务端与表单隐藏域中的 ...

iteye_5347的博客 799

SSM项目解决接口重复提交和自定义注解不生效问题

一、业务需求二、示例代码(1)自定义注解(2)注解业务代码(3)控制层三、排查配置(重要)@Inherited/*** 默认 10s*//*** 请求完成后 是否一直等待* true则等待* @return*/}

qq_38685242的博客 908

防止JSP页面重复提交的三种方式

在web项目的过程中,由于网络等各种原因,客户重复提交表单数据的现象很普遍,那么我们如何来有效防止此类事情的发生呢?下文我们从客户端、服务端、和数据库层三个方面进行分析: 一、客户端: 禁用提交按钮 当用户提交表单后,使用JAVASCRIPT脚本语言,将提交钮禁用。 分析:如客户端没有开启脚本功能就出现问题;这也仅是在表单处理前有用,防止用户多次点击提交钮; 二、

sj820710的专栏 1327

利用Token机制解决重复重复提交问题

利用Token解决重复重复提交: Struts利用同步令牌(Token)的方式来解决Web应用中重复提交的问题,其机制是在form表单中增加一个隐藏的域,保存当前令牌值,然后在程序中判断此令牌值是否合法. 原理基本如下: 1.在原表单页面   中增加一个隐藏域,用于保存当前令牌(随机数token)的值。 2.在原表单页面   中将此token放入session中 3.在目

leokelly001的专栏 7374

Jsp 防止表单重复提交几种方案

SP避免Form重复提交的三种方案  1) javascript ,设置一个变量,只允许提交一次。        var checksubmitflg = false;    function checksubmit() {    if (checksubmitflg == true) {    return false;    }    checksubmitfl

passport_daizi的博客 2万+

jsp防止重复提交的3种办法(转)

 1 javascript ,设置一个变量,只允许提交一次。 <script language="javascript"> var checkSubmitFlg = false; function checkSubmit() { if (checkSubmitFlg == true) { return false; } checkSubm

zhanghaotao的专栏 4231

JavaWeb使用Token令牌,解决表单重复提交问题

一个小例子,模拟银行转账,在转账的页面,点击转账,就可以向对方账户进行转账 但是转账成功之后,如果刷新页面,就会弹出一条提示,如果点击继续,就会重复提交,再转账一次,不断刷新,也就会不断转账,那么如何解决表单重复提交的问题呢? 可以使用一个标志,在服务器端存储一个标志(令牌),然后在客户端也存储一个,通过匹配两个令牌,来判断是否可以转账 在第一次请求转账页面的时候会创建令牌,然后在转账后(无论成功与否)删除服务器端的令牌,这样下次刷新后再请求转账,就会出现令牌不匹配的情况,也就无法再次转账了,这样就解决

她的坏机器人 710

jsp防止刷新重复提交

1、 通过重定向的方式:把地址栏的地址显示为最后的地址。 2、 禁止客户端刷新:通过JS来控制,禁用刷新的功能、清除访问历史纪录。 3、 Struts自带的方式(令牌): 服务器端发放一次性使用的令牌方式,服务器端给客户端每次请求发一个令牌,在客户端提交之后,检查令牌, 如果这个令牌是第一次使用,就ok;否则,提示重复提交。 Action中有个几个相关方法: SaveToken(r

岁寒松柏 3690

web api post防止重复提交_教你设置防止web表单重复提交的几种策略

网页美工培训课程老师教你设置防止web表单重复提交的几种策略,因为表单重复提交是在多用户Web应用中最常见、带来很多麻烦的一个问题。有很多的应用场景都会遇到重复提交问题,比如:点击提交按钮两次。点击刷新按钮。使用浏览器后退按钮重复之前的操作,导致重复提交表单。使用浏览器历史记录重复提交表单。浏览器重复的HTTP请求。几种防止表单重复提交的方法禁掉提交按钮。表单提交后使用Javascript使提交按...

weixin_39855186的博客 864
上一篇: 用ajax+jQuery 实现页面加载更多(另类的分页)
下一篇: mysql存储过程+游标循环遍历 判断 赋值 等实例一
Ice166
博客等级 码龄9年 151粉丝 22原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值