Laravel如何创建自定义中间件?(Middleware代码示例)

发布时间 - 2025-12-17 00:00:00    点击率:
Laravel 中创建自定义中间件需运行 php artisan make:middleware CheckAge 生成类,在 handle 方法中编写逻辑(如检查年龄≥18),再注册并应用到路由或控制器。

在 Laravel 中创建自定义中间件很简单,核心是使用 Artisan 命令生成类,然后在 handle 方法里写逻辑,最后注册并应用到路由或控制器。

生成中间件类

Laravel 提供了便捷命令自动创建中间件文件:

  • 运行 php artisan make:middleware CheckAge
  • 会在 app/Http/Middleware/ 目录下生成 CheckAge.php
  • 该类默认包含 handle 方法和 $next 参数(代表下一个请求处理者)

编写中间件逻辑(示例:年龄检查)

比如限制用户必须年满 18 岁才能访问某页面:

age < 18) {
            return redirect('home');
        }

        return $next($request);
    }
}

注意:$next($request) 必须被调用,否则请求链会中断;返回 redirectresponse 可提前终止流程。

注册中间件

中间件需先注册才能使用:

  • 全局中间件(所有请求都经过):在 app/Http/Kernel.php$middleware 数组中添加
  • 分组中间件(如 web/api):加到 $middlewareGroups 对应数组里(例如 web
  • 路由中间件(只对特定路由生效):在 $routeMiddleware 中注册别名,例如:
'age' => \App\Http\Middleware\CheckAge::class,

在路由或控制器中使用

注册别名后,即可灵活调用:

  • 路由中使用:Route::get('/profile', [ProfileController::class, 'show'])->middleware('age');
  • 多个中间件可链式写:->middleware(['auth', 'age'])
  • 控制器构造函数中绑定:$this->middleware('age');
  • 控制器方法级控制:$this->middleware('age')->only('edit');

基本上就这些。中间件本质就是请求-响应管道中的一个处理环节,写清楚判断条件和放行/拦截逻辑,再正确注册和调用,就能满足绝大多数权限、校验、日志等场景需求。


# php  # laravel  # app  # 路由  # 中间件  # 构造函数  # class  # this  # http  # 自定义  # 链式  # 并应  # 就能  # 多个  # 会在  # 很简单  # 只对  # 绑定  # 组中 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: JavaScript Ajax实现异步通信  UC浏览器如何切换小说阅读源_UC浏览器阅读源切换【方法】  Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复  Laravel N+1查询问题如何解决_Eloquent预加载(Eager Loading)优化数据库查询  如何在万网开始建站?分步指南解析  儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?  HTML透明颜色代码怎么让下拉菜单透明_下拉菜单透明背景指南【技巧】  Laravel如何为API生成Swagger或OpenAPI文档  Python并发异常传播_错误处理解析【教程】  JavaScript如何操作视频_媒体API怎么控制播放  如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程  黑客入侵网站服务器的常见手法有哪些?  Laravel如何编写单元测试和功能测试?(PHPUnit示例)  制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?  Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程  JS碰撞运动实现方法详解  lovemo网页版地址 lovemo官网手机登录  Laravel如何实现数据库事务?(DB Facade示例)  深圳网站制作平台,深圳市做网站好的公司有哪些?  Laravel如何理解并使用服务容器(Service Container)_Laravel依赖注入与容器绑定说明  浅析上传头像示例及其注意事项  香港服务器网站卡顿?如何解决网络延迟与负载问题?  重庆市网站制作公司,重庆招聘网站哪个好?  php增删改查怎么学_零基础入门php数据库操作必知基础【教程】  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  如何快速搭建安全的FTP站点?  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  湖南网站制作公司,湖南上善若水科技有限公司做什么的?  如何快速查询域名建站关键信息?  如何确认建站备案号应放置的具体位置?  手机怎么制作网站教程步骤,手机怎么做自己的网页链接?  如何快速选择适合个人网站的云服务器配置?  如何用AI帮你把自己的生活经历写成一个有趣的故事?  如何在云虚拟主机上快速搭建个人网站?  Laravel如何使用Livewire构建动态组件?(入门代码)  微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  Laravel如何使用Blade组件和插槽?(Component代码示例)  JavaScript如何实现倒计时_时间函数如何精确控制  Laravel如何使用Eloquent ORM进行数据库操作?(CRUD示例)  Laravel如何从数据库删除数据_Laravel destroy和delete方法区别  UC浏览器如何设置启动页 UC浏览器启动页设置方法  Firefox Developer Edition开发者版本入口  JavaScript如何实现音频处理_Web Audio API如何工作?  如何批量查询域名的建站时间记录?  Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案  Laravel如何使用Passport实现OAuth2?(完整配置步骤)  如何获取免费开源的自助建站系统源码?  Laravel的Blade指令怎么自定义_创建你自己的Laravel Blade Directives