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

27次阅读

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 AppHttpMiddleware;  use Closure; use IlluminateHttpRequest;  class CheckAge {     public function handle(Request $request, Closure $next)     {         if ($request->age < 18) {             return redirect('home');         }          return $next($request);     } }

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

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

CodeGeeX

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

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

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

注册中间件

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

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

'age' => AppHttpMiddlewareCheckAge::class,

在路由或控制器中使用

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

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

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

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

text=ZqhQzanResources