IT-Q

ミドルウェアはいつ実行されますか。

コントローラに到達する前です。$next($request) の前に書けば前処理、後に書けば後処理になります。登録順に入れ子で積まれるので、認証と権限チェックは順序が意味を持ちます。

面接官が見ているのはリクエストの流れを理解しているか。

よくある答えと、面談でどう見られるか

  • コントローラに到達する前(および必要ならレスポンス生成後)
    その通りです。認証やログのような横断的な処理をここに置きます。
  • ビューがレンダリングされたあとだけ
    後処理も書けますが、主な役割は到達前の処理です。
  • アプリケーションの起動時に一度だけ
    それは ServiceProvider の boot に近い話です。ミドルウェアはリクエストごとです。
  • DB にアクセスする直前
    DB とは無関係で、HTTP リクエストの層で動きます。

模範解答

コントローラに到達する前に実行されます。$next($request) を呼ぶ前に書けば前処理、呼んだ後に書けば後処理になります。

認証、権限チェック、ログ記録、言語切り替えなど、複数のコントローラに共通する処理をここに寄せます。複数のミドルウェアは登録順に入れ子で積まれるので、順序が意味を持ちます。