阅读(488) (6)

Laravel 8 中间件组

2021-06-24 09:18:56 更新

有时,您可能希望将多个中间件归为一个键,以使其更易于分配给路由。 您可以使用 HTTP 内核的 $middlewareGroups 属性来实现。

Laravel 开箱即用,带有 webapi 中间件组,其中包含您可能要应用于 Web UI 和 API 路由的通用中间件:

/**
 * 路由中间件组
 *
 * @var array
 */
protected $middlewareGroups = [
    'web' => [
        AppHttpMiddlewareEncryptCookies::class,
        IlluminateCookieMiddlewareAddQueuedCookiesToResponse::class,
        IlluminateSessionMiddlewareStartSession::class,
        IlluminateViewMiddlewareShareErrorsFromSession::class,
        AppHttpMiddlewareVerifyCsrfToken::class,
        IlluminateRoutingMiddlewareSubstituteBindings::class,
    ],

    'api' => [
        'throttle:api',
        IlluminateRoutingMiddlewareSubstituteBindings::class,
    ],
];

中间件组可以使用与单个中间件相同的语法将自身分配给路由和控制器动作。同样,中间件组使得一次将多个中间件分配给一个路由更加方便:

Route::get('/', function () {
    //
})->middleware('web');

Route::group(['middleware' => ['web']], function () {
    //
});

Route::middleware(['web', 'subscribed'])->group(function () {
    //
}); 

技巧:RouteServiceProvider 默认将 web 中间件组自动应用到 routes/web.php