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 】
相关推荐:
标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南
Laravel如何实现API版本控制_Laravel API版本化路由设计策略
如何快速选择适合个人网站的云服务器配置?
Python进程池调度策略_任务分发说明【指导】
Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】
如何用AI帮你把自己的生活经历写成一个有趣的故事?
详解阿里云nginx服务器多站点的配置
javascript读取文本节点方法小结
如何快速搭建高效简练网站?
Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID
详解Android图表 MPAndroidChart折线图
如何快速搭建安全的FTP站点?
Laravel如何实现本地化和多语言支持_Laravel多语言配置与翻译文件管理
java ZXing生成二维码及条码实例分享
Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】
Laravel如何实现用户密码重置功能?(完整流程代码)
Laravel如何发送系统通知_Laravel Notifications实现多渠道消息通知
制作旅游网站html,怎样注册旅游网站?
免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?
手机怎么制作网站教程步骤,手机怎么做自己的网页链接?
node.js报错:Cannot find module 'ejs'的解决办法
Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】
Laravel全局作用域是什么_Laravel Eloquent Global Scopes应用指南
音响网站制作视频教程,隆霸音响官方网站?
EditPlus中的正则表达式实战(6)
如何在 Pandas 中基于一列条件计算另一列的分组均值
详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南
Laravel API资源类怎么用_Laravel API Resource数据转换
php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】
如何在阿里云域名上完成建站全流程?
如何在服务器上配置二级域名建站?
桂林网站制作公司有哪些,桂林马拉松怎么报名?
Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)
Laravel如何处理文件下载请求?(Response示例)
如何用PHP快速搭建CMS系统?
微信小程序 wx.uploadFile无法上传解决办法
如何快速登录WAP自助建站平台?
如何快速搭建高效香港服务器网站?
Laravel怎么实现搜索功能_Laravel使用Eloquent实现模糊查询与多条件搜索【实例】
成都网站制作公司哪家好,四川省职工服务网是做什么用?
为什么要用作用域操作符_php中访问类常量与静态属性的优势【解答】
Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】
,怎么在广州志愿者网站注册?
中山网站推广排名,中山信息港登录入口?
什么是javascript作用域_全局和局部作用域有什么区别?
如何用美橙互联一键搭建多站合一网站?
如何用西部建站助手快速创建专业网站?
Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决
laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法
javascript基本数据类型及类型检测常用方法小结
上一篇:如何在阿里云通过域名搭建网站?
上一篇:如何在阿里云通过域名搭建网站?


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