カテゴリ: 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の認証状態をチェックする方法を完全解説!authとAuth::check()を初心者向けにやさしく説明
New2
CodeIgniter
CodeIgniterのコントローラクラスの作り方を完全ガイド!初心者でもわかる基礎から実践まで
New3
Symfony
Symfonyのフォームラベルを多言語対応!初心者でもわかる翻訳設定ガイド
New4
Laravel
Laravelでユーザー登録機能を作る方法!初心者向けにバリデーションとリダイレクトをやさしく解説
人気記事
No.1
Java&Spring記事人気No1
Laravel
Laravelのデータベース設定方法を完全ガイド!初心者でもわかる.envファイルの使い方
No.2
Java&Spring記事人気No2
Laravel
Laravelのビューとは?Bladeテンプレートの基本を解説
No.3
Java&Spring記事人気No3
Laravel
Laravelでセッションを扱う方法!保存方法と利用例を解説
No.4
Java&Spring記事人気No4
Laravel
Laravelのルート一覧を確認する方法!初心者でもわかるphp artisan route:listの使い方
No.5
Java&Spring記事人気No5
Laravel
Laravelでルーティングを設定する方法!web.phpと基本ルートの書き方を初心者向けに徹底解説
No.6
Java&Spring記事人気No6
Laravel
Laravelでログを出力する方法(Monolog・storage/logs)
No.7
Java&Spring記事人気No7
Laravel
LaravelでルートをBladeテンプレートに記述する方法(route関数)
No.8
Java&Spring記事人気No8
Laravel
Laravelのルートキャッシュ機能を活用してパフォーマンス改善!初心者でもわかる完全ガイド