ミドルウェアはいつ実行されますか。
コントローラに到達する前です。$next($request) の前に書けば前処理、後に書けば後処理になります。登録順に入れ子で積まれるので、認証と権限チェックは順序が意味を持ちます。
面接官が見ているのはリクエストの流れを理解しているか。
よくある答えと、面談でどう見られるか
- コントローラに到達する前(および必要ならレスポンス生成後)
その通りです。認証やログのような横断的な処理をここに置きます。 - ビューがレンダリングされたあとだけ
後処理も書けますが、主な役割は到達前の処理です。 - アプリケーションの起動時に一度だけ
それは ServiceProvider の boot に近い話です。ミドルウェアはリクエストごとです。 - DB にアクセスする直前
DB とは無関係で、HTTP リクエストの層で動きます。
模範解答
コントローラに到達する前に実行されます。$next($request) を呼ぶ前に書けば前処理、呼んだ後に書けば後処理になります。
認証、権限チェック、ログ記録、言語切り替えなど、複数のコントローラに共通する処理をここに寄せます。複数のミドルウェアは登録順に入れ子で積まれるので、順序が意味を持ちます。