Laravel 中间件是一种处理 HTTP 请求的中间层,它可以拦截和修改请求,并在其路由处理之前或之后执行。Laravel 提供了一些自带的中间件,这些中间件被定义在 app/Http/Kernel.php
文件中。
以下是 Laravel 中间件的一些常见自带中间件:
Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class
:检查应用程序是否处于维护模式。Illuminate\Foundation\Http\Middleware\ValidatePostSize::class
:验证 POST 数据大小是否超过配置限制。Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class
:检查应用程序是否处于维护模式。Illuminate\Foundation\Http\Middleware\TrimStrings::class
:修剪请求字符串。Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class
:将空字符串转换为 null
。Illuminate\Foundation\Http\Middleware\TrustProxies::class
:信任代理头。Illuminate\Session\Middleware\StartSession::class
:启动会话。Illuminate\View\Middleware\ShareErrorsFromSession::class
:共享错误信息到视图。Illuminate\Routing\Middleware\SubstituteBindings::class
:替换路由绑定。Illuminate\Auth\Middleware\Authenticate::class
:执行认证。Illuminate\Auth\Middleware\Authorize::class
:执行授权。Illuminate\Auth\Middleware\EnsureEmailIsVerified::class
:确保邮箱已验证。
要使用这些中间件,你需要在 app/Http/Kernel.php
文件中的 $routeMiddleware
数组中注册它们。这样,你就可以在路由或控制器中使用它们了。
例如,如果你想要为所有路由启用会话开始中间件,你可以在 $middleware
属性中添加 StartSession
中间件:
protected $middleware = [
// ...
\Illuminate\Session\Middleware\StartSession::class,
// ...
];
如果你想要为某个特定的路由分组启用某个中间件,你可以在 $middlewareGroups
数组中添加它:
protected $middlewareGroups = [
'web' => [
// ...
\Illuminate\Session\Middleware\StartSession::class,
// ...
],
// ...
];
如果你想要为路由定义中间件,你可以在路由定义时使用 middleware
方法:
Route::get('/', function () {
//
})->middleware(\Illuminate\Session\Middleware\StartSession::class);
或者使用别名:
Route::get('/', function () {
//
})->middleware('session');
注意,session
是 StartSession
中间件的别名,它在 app/Http/Kernel.php
文件的 $middlewareAliases
数组中定义。
以上就是 Laravel 中间件的一些基本使用方法。