タイガーラック クリエイティブブログ
2024
April
12

【Laravel】MiddlewareでBasic認証をかける

Laravelサイトの特定のページに、Basic認証をかけたい。

環境

Laravel Framework 9.52.16
PHP 8.2.7

やったこと

middlewareの新規作成。

$ php artisan make:middleware BasicAuthMiddleware

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

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;

class BasicAuthMiddleware
{
    /**
     * 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)
    {
        switch (true) {
            case !isset($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']):
            case $_SERVER['PHP_AUTH_USER'] !== 'user':
            case $_SERVER['PHP_AUTH_PW']   !== 'password':
                header('WWW-Authenticate: Basic realm="Enter username and password."');
                header('Content-Type: text/plain; charset=utf-8');
                die('このページを見るにはログインが必要です');
        }

        header('Content-Type: text/html; charset=utf-8');

        return $next($request);
    }
}

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

protected $routeMiddleware = [
	...
	'basicauth' => '\App\Http\Middleware\BasicAuth',
];

routesファイルでBasic認証をかけたいページは、追加したmiddlewareを通す。

Route::group(['middleware' => 'basicauth'], function() {
    Route::view('/test', 'test')->name('test');
});

こうすることで、簡単にBasic認証をかけることができました。

このカテゴリの最新記事

関連記事

SHOP LIST

タイガーラック株式会社

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