エンジニアのひよこ_level10

毎日更新してた人。たまに記事書きます。

【Laravel】ミドルウェアの指定を一個にまとめる【388日目】

こんなときにつかう

protected $routeMiddleware = [
    'auth' => \App\Http\Middleware\Authenticate::class,
    'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
    'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
......
Route::get('admin/profile', function () {
    //
})->middleware('auth','auth.basic','binding','xxx','yyy');

こんな感じに、たくさんミドルウェアを書くのは面倒。

せっかくなら、ひとまとめにしたり、グループ化したい。

こう書く

protected $middlewareGroups = [
    'web' => [
        \App\Http\Middleware\EncryptCookies::class,
        \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
        \Illuminate\Session\Middleware\StartSession::class,
        \Illuminate\View\Middleware\ShareErrorsFromSession::class,
        \App\Http\Middleware\VerifyCsrfToken::class,
        \Illuminate\Routing\Middleware\SubstituteBindings::class,
    ],

    'api' => [
        'throttle:60,1',
        'auth:api',
    ],
];
Route::get('/', function () {
    //
})->middleware('web');

こんなふうに、ひとまとめにできる。

グループ化すると、見やすい。さらにグループにすることで、意味の単位が作れる。

'top'とか、'admin'とか、'login'など、使われるミドルウェアの種類をひとまとめにすると、コピペしなくていいね。

参考元

公式ドキュメントー

ミドルウェア 5.7 Laravel