首页 > php框架 > Laravel > 正文

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

穿越時空
发布: 2025-12-17 10:04:02
原创
274人浏览过
Laravel 中创建自定义中间件需运行 php artisan make:middleware CheckAge 生成类,在 handle 方法中编写逻辑(如检查年龄≥18),再注册并应用到路由或控制器。

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

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

生成中间件类

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

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

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

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

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;

class CheckAge
{
    public function handle(Request $request, Closure $next)
    {
        if ($request->age < 18) {
            return redirect('home');
        }

        return $next($request);
    }
}
登录后复制

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

CodeGeeX
CodeGeeX

智谱AI发布的AI编程辅助工具插件,可以实现自动代码生成、代码翻译、自动编写注释以及智能问答等功能

CodeGeeX 191
查看详情 CodeGeeX

注册中间件

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

  • 全局中间件(所有请求都经过):在 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');

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

以上就是Laravel如何创建自定义中间件?(Middleware代码示例)的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号