タイガーラック クリエイティブブログ
2024
September
13

【Laravel】MiddlewareでIP制限をする

Laravelサイトの特定のページに、IPアドレスでの閲覧制限をつけたい。

環境

Laravel Framework 9.52.16
PHP 8.2.7

やったこと

middlewareの新規作成。

$ php artisan make:middleware IpFirewall

新規作成されたmiddlewareファイルを編集する。

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;

class IpFirewall
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse)  $next
     * @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
     */
    public function handle(Request $request, Closure $next)
    {
        // IPの配列
        $ip = [
            // ここに閲覧OKのIPアドレスを書く
            ['ip' => '127.0.0.1'],
            ['ip' => '127.0.0.2']
        ];

        // アクセスされたIPアドレスが$ipに含まれているかチェック
        $detect = collect($ip)->contains('ip', $request->ip());

				// $ipに設定したIPアドレス以外のアクセス時の処理
        if (!$detect) {
            return redirect('login');
        }

				// $ipに設定したIPアドレスからのアクセス時はrequestを通す
        return $next($request);
    }
}

作成したmiddlewareを app/Http/Kernel.php に追加する。

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

routesファイルでIP制限をかけたいページは、追加したmiddlewareを通す。

Route::view('/test', 'test')->name('test')->middleware('ip.firewall');

こうすることで、簡単にIPアドレスでの閲覧制限をつけることができました。

このカテゴリの最新記事

関連記事

SHOP LIST

タイガーラック株式会社

〒577-0056
大阪府東大阪市長堂1-3-14 TOKUYASU Bld.