ミドルウェアって何?「交通整理係」の仕事
ミドルウェアとは、リクエスト(ユーザーからの要求)がControllerに届く前に実行される「中間処理」のことです。 例えば、認証や権限チェック、データ整形などを共通して行うのに使います。
具体的な役割
- 認証: ユーザーがログインしているかを確認する
- 権限チェック: 管理者のみがアクセスできるページを制御する
- リクエスト整形: データのサニタイズなどを一括で行う
処理の流れ
リクエスト → ミドルウェア → Controller → ミドルウェア(レスポンス処理) → ユーザー
このように、ミドルウェアはまるで高速道路の料金所や交通整理係のように、
「誰が通れるか」「どんな状態で通るべきか」を管理する役割を担っています。
簡単!Laravelでミドルウェアを使ってみよう
Laravelではコマンド一発でミドルウェアを作成できます。
php artisan make:middleware CheckUserAuthenticated
生成されたクラスには handle
メソッドがあります。ここでリクエストをチェックし、
問題なければ return $next($request);
を実行することで次の処理(別のミドルウェアやController)へ進めます。
コード例: ログインしていないユーザーをリダイレクト
public function handle($request, Closure $next)
{
if (!auth()->check()) {
return redirect('/login');
}
return $next($request);
}
このコードによって、未ログインのユーザーはログインページへ誘導されます。
逆にログイン済みであれば $next($request)
によって処理が進行します。
ミドルウェアの登録と適用
- Kernel.phpに登録:
app/Http/Kernel.php
に書き込む - ルートで適用:
web.php
でグループに適用可能 - Controllerで適用: コンストラクター内で
$this->middleware('auth');
こんなに便利!実用的なミドルウェアの活用例
1. ユーザー権限チェック
public function handle($request, Closure $next)
{
if (!auth()->user() || !auth()->user()->isAdmin()) {
abort(403, 'このページにアクセスできません');
}
return $next($request);
}
2. メンテナンスモード
public function handle($request, Closure $next)
{
if (config('app.maintenance')) {
return response('現在メンテナンス中です', 503);
}
return $next($request);
}
3. IPアドレス制限
public function handle($request, Closure $next)
{
$allowedIps = ['123.45.67.89'];
if (!in_array($request->ip(), $allowedIps)) {
abort(403, 'アクセスが許可されていません');
}
return $next($request);
}
まとめ:ミドルウェアがあなたのコードを救う
ミドルウェアは全リクエストに共通する横断的処理を担い、コードの重複を防ぎます。
一方でService層は特定のビジネスロジックをまとめる場所です。
これを理解することで、よりシンプルでメンテナンス性の高いコードが書けるようになります。
「交通整理係」としてのミドルウェアをうまく活用し、開発を効率化しましょう!