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) 必须被调用,否则请求链会中断;返回 redirect 或 response 可提前终止流程。
注册中间件
中间件需先注册才能使用:
- 全局中间件(所有请求都经过):在
app/Http/Kernel.php的$middleware数组中添加 - 分组中间件(如 web/api):加到
$middlewareGroups对应数组里(例如web) - 路由中间件(只对特定路由生效):在
$routeMiddleware中注册别名,例如:
'age' => \App\Http\Middleware\CheckAge::class,
在路由或控制器中使用
注册别名后,即可灵活调用:
- 路由中使用:
R
oute::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
上一篇:如何在阿里云通过域名搭建网站?
上一篇:如何在阿里云通过域名搭建网站?


oute::get('/profile', [ProfileController::class, 'show'])->middleware('age');