Laravel 11中如何注册自定义中间件?
Laravel 11 自定义中间件注册方法
Laravel 11 移除了传统的kernel.php文件,所有中间件注册逻辑都迁移到了bootstrap/app.php中,以下是几种常见的注册方式:
1. 全局中间件
全局中间件会作用于所有HTTP请求,注册时在withMiddleware闭包中用append或prepend控制执行顺序:
return Application::configure(basePath: dirname(__DIR__)) ->withRouting( web: __DIR__.'/../routes/web.php', commands: __DIR__.'/../routes/console.php', health: '/up', ) ->withMiddleware(function (Middleware $middleware) { // 添加到全局中间件末尾 $middleware->append(\App\Http\Middleware\YourCustomMiddleware::class); // 如需优先执行,添加到开头 // $middleware->prepend(\App\Http\Middleware\PriorityMiddleware::class); }) ->create();
2. 路由别名中间件
给中间件设置别名后,能更简洁地在路由中引用,同样在withMiddleware闭包里配置:
->withMiddleware(function (Middleware $middleware) { $middleware->alias([ 'auth.custom' => \App\Http\Middleware\CustomAuth::class, 'log.request' => \App\Http\Middleware\RequestLogger::class, ]); })
注册完成后,可通过别名调用中间件:
Route::get('/dashboard', [DashboardController::class, 'index'])->middleware('auth.custom');
3. 直接绑定到路由/路由组
不需要全局注册或别名的话,可直接在路由或路由组中指定中间件类:
// 单个路由 Route::get('/profile', [ProfileController::class, 'show'])->middleware(\App\Http\Middleware\YourCustomMiddleware::class); // 路由组 Route::middleware([\App\Http\Middleware\YourCustomMiddleware::class])->group(function () { Route::get('/posts', [PostController::class, 'index']); Route::post('/posts', [PostController::class, 'store']); });
内容的提问来源于stack exchange,提问作者Asim Reyazuddin
相关产品推荐
相关产品推荐

