カテゴリ: Laravel 更新日: 2025/12/31

LaravelでIP制限をかけるミドルウェアの作成方法!初心者向け完全ガイド

LaravelでIP制限をかけるミドルウェアの作成方法
LaravelでIP制限をかけるミドルウェアの作成方法

先生と生徒の会話形式で理解しよう

生徒

「Laravelで特定のIPアドレスからしかアクセスできないようにしたいんですけど、どうすればいいですか?」

先生

「それなら、ミドルウェアを作成してIP制限を実装する方法があります。」

生徒

「ミドルウェアって難しそうですが、初心者でも作れますか?」

先生

「大丈夫です。順を追って説明しますので安心してください。まず、ミドルウェアの基本を理解しましょう。」

1. ミドルウェアとは?

1. ミドルウェアとは?
1. ミドルウェアとは?

Laravelのミドルウェアは、リクエスト(アクセス)とレスポンス(返答)の間に入る中間処理のことです。例えば、ログインしているかどうかを確認したり、IPアドレスをチェックしたりする処理をまとめることができます。簡単に言うと、「門番」のような役割を果たして、アクセスを制御する仕組みです。

2. IP制限ミドルウェアの作成手順

2. IP制限ミドルウェアの作成手順
2. IP制限ミドルウェアの作成手順

まず、Laravelでミドルウェアを作成するには、Artisanコマンドを使います。ArtisanはLaravelのコマンドラインツールで、アプリ開発を効率化してくれます。


php artisan make:middleware IpCheck

このコマンドで app/Http/Middleware/IpCheck.php が作成されます。

3. ミドルウェアの中身を編集する

3. ミドルウェアの中身を編集する
3. ミドルウェアの中身を編集する

作成された IpCheck ミドルウェアを開き、アクセスを許可するIPアドレスを指定します。


namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;

class IpCheck
{
    protected $allowedIps = [
        '123.45.67.89', // 許可するIPアドレスをここに追加
        '111.22.33.44',
    ];

    public function handle(Request $request, Closure $next)
    {
        if (!in_array($request->ip(), $this->allowedIps)) {
            abort(403, 'このIPアドレスからのアクセスは許可されていません。');
        }

        return $next($request);
    }
}

ポイントは $request->ip() でアクセス元のIPを取得し、許可リストと照合していることです。abort(403) は、アクセスを拒否するためのLaravelの関数で、HTTPステータスコード403(Forbidden)を返します。

4. ミドルウェアをルートに適用する

4. ミドルウェアをルートに適用する
4. ミドルウェアをルートに適用する

作成したIP制限ミドルウェアをルートに登録します。まず、app/Http/Kernel.php を開き、$routeMiddleware 配列に追加します。


protected $routeMiddleware = [
    'ip.check' => \App\Http\Middleware\IpCheck::class,
];

その後、ルートに適用します。


Route::get('/admin', [AdminController::class, 'index'])
    ->middleware('ip.check');

これで /admin にアクセスすると、許可されたIPアドレスのみ通過できるようになります。

5. ルートグループでまとめてIP制限を適用する

5. ルートグループでまとめてIP制限を適用する
5. ルートグループでまとめてIP制限を適用する

複数のルートに同じIP制限を適用したい場合は、ルートグループを使うと便利です。


Route::middleware(['ip.check'])->group(function () {
    Route::get('/admin', [AdminController::class, 'index']);
    Route::get('/dashboard', [DashboardController::class, 'index']);
});

これで、グループ内のすべてのルートに同じミドルウェアが適用されます。

6. 注意点と補足

6. 注意点と補足
6. 注意点と補足

IPアドレスはプロキシやVPNを使うと実際のアクセス元と異なる場合があります。そのため、開発環境やセキュリティ要件に応じて柔軟に対応することが大切です。また、許可リストは.envファイルなどで管理すると、環境ごとに変更しやすくなります。

初心者でも、上記の手順を順番に行えば、簡単にIP制限を実装でき、アクセス制御の基本を学ぶことができます。

カテゴリの一覧へ
新着記事
New1
Laravel
Laravelのコントローラでリクエストをログ出力する方法を初心者向けに解説
New2
Laravel
Laravelでモデルからデータを取得・保存・更新・削除する方法を完全ガイド!初心者でもわかるEloquent ORM入門
New3
Symfony
Symfonyのセッション管理完全ガイド!初心者でもわかるセッションドライバ設定(file・Redis)
New4
Laravel
Laravelのエラーメッセージをカスタマイズする方法|初心者向けガイド
人気記事
No.1
Java&Spring記事人気No1
Laravel
Laravelでモデルからデータを取得・保存・更新・削除する方法を完全ガイド!初心者でもわかるEloquent ORM入門
No.2
Java&Spring記事人気No2
Laravel
LaravelでBasic認証を実装するミドルウェアの使い方!初心者向けガイド
No.3
Java&Spring記事人気No3
Symfony
SymfonyでTwigテンプレートを表示する方法を完全ガイド!初心者にもわかるHTMLとの違いや使い方
No.4
Java&Spring記事人気No4
Laravel
Laravelのデータベース設定方法を完全ガイド!初心者でもわかる.envファイルの使い方
No.5
Java&Spring記事人気No5
Laravel
LaravelでファクトリとSeederを組み合わせてダミーデータを生成する方法!初心者でも簡単にテストデータ作成
No.6
Java&Spring記事人気No6
Symfony
Symfonyのコントローラでリダイレクトする方法を徹底解説!初心者にもやさしく解説
No.7
Java&Spring記事人気No7
Laravel
Laravelのインストール方法まとめ!ComposerとLaravel Installerの使い方
No.8
Java&Spring記事人気No8
CodeIgniter
CodeIgniterでRESTful API開発!API専用コントローラの作り方入門