<?php namespace App\Http\Middleware; use App\Exceptions\InvalidRequestException; use Closure; use Illuminate\Support\Facades\Redis; class PreventDupSubmit { /** * 简单的防止前端重复提交数据 导致的数据异常 * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { $requestParams = $request->all(); $requestParams["adminId"] = getAdminUserId(); $requestParams["uri"] = $request->getUri(); ksort($requestParams); $key = md5(serialize($requestParams)); $result = Redis::Connection("wms")->set('wms_' . $key, 1,"EX",5,"NX"); if(!$result){ throw new InvalidRequestException("请勿重复请求,请5秒后再发起请求"); } $response = $next($request); Redis::Connection("wms")->del('wms_' . $key); return $response; } }
使用:
Route::match(['get', 'post'], '/putawayAction', 'StockShelfController@putawayAction')->middleware('prevent_dup_submit');//上架 Route::match(['get', 'post'], '/cancelPutawayAction', 'StockShelfController@cancelPutawayAction')->middleware('prevent_dup_submit');//取消上架 Route::match(['get', 'post'], '/oneKeyPutawayAction', 'StockShelfController@oneKeyPutawayAction')->middleware('prevent_dup_submit');//一键上架 Route::match(['get', 'post'], '/submitPutawayAction', 'StockShelfController@submitPutawayAction')->middleware('prevent_dup_submit');//提交上架
本文来自博客园,作者:孙龙-程序员,转载请注明原文链接:https://www.cnblogs.com/sunlong88/p/17522085.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能