信息发布→ 登录 注册 退出

Laravel怎么创建和注册自定义中间件

发布时间:2025-11-22

点击量:
答案:在Laravel中创建自定义中间件需使用Artisan命令生成文件,在handle方法中编写过滤逻辑,如CheckAge中间件验证请求年龄;接着在Kernel.php的$routeMiddleware数组中注册并设置别名;然后在路由或控制器中通过middleware方法应用该中间件;支持参数传递时可在handle方法增加参数并在使用时传入具体值。

在 Laravel 中创建和注册自定义中间件非常简单,只需几个步骤即可完成。中间件可以用来过滤进入应用的 HTTP 请求,比如权限验证、日志记录、请求修改等。

1. 创建自定义中间件

使用 Artisan 命令行工具生成中间件:

php artisan make:middleware CheckAge

这个命令会在 app/Http/Middleware 目录下生成一个名为 CheckAge.php 的文件。

打开该文件,可以看到基本结构:

namespace App\Http\Middleware;

use Closure;

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

        return $next($request);
    }
}

你可以根据需要修改逻辑。例如上面的例子是检查请求中是否包含 age 参数且大于 18,否则跳转到首页。

2. 注册中间件

中间件需要注册后才能使用,注册方式有三种:全局中间件、路由中间件、路由直接绑定。

(1)注册为路由中间件

打开 app/Http/Kernel.php 文件,在 $routeMiddleware 数组中添加你的中间件:

protected $routeMiddleware = [
    // 其他中间件...
    'check.age' => \App\Http\Middleware\CheckAge::class,
];

这样就可以在路由中通过别名 check.age 使用它。

(2)注册为全局中间件(可选)

如果你希望中间件对所有请求生效,可以将其类名加入 $middleware 数组:

protected $middleware = [
    // 其他全局中间件...
    \App\Http\Middleware\CheckAge::class,
];

一般不建议将业务相关的中间件设为全局,以免影响所有接口。

3. 在路由中使用中间件

注册完成后,可以在路由中使用中间件:

Route::get('/profile', function () {
    return view('profile');
})->middleware('check.age');

也可以用于控制器:

class ProfileController extends Controller
{
    public function __construct()
    {
        $this->middleware('check.age');
    }
}

4. 可选:支持参数的中间件

中间件还支持接收参数,比如限制特定年龄段:

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

    return $next($request);
}

使用时传参:

middleware('check.age:21')

基本上就这些。创建中间件用 Artisan 命令,注册到 Kernel,然后在路由或控制器中调用即可。逻辑写在 handle 方法里,灵活又方便。

标签:# 自定义  # 并在  # 会在  # 设为  # 只需  # 你可以  # 如果你  # 器中  # 组中  # 可选  # php  # http  # 接口  # 中间件  # red  # 权限验证  # 路由  # 工具  # app  # laravel  
在线客服
服务热线

服务热线

4008888355

微信咨询
二维码
返回顶部
×二维码

截屏,微信识别二维码

打开微信

微信号已复制,请打开微信添加咨询详情!