Laravel

【Laravel】Basic認証を実装する方法

LaravelでBasic認証を実装する方法です。
本記事でご紹介するのは、middlewareでアクセス制限を行う方法です。

■ 手順1
まず「Http/Middleware」のディレクトリ配下に「BasicAuthMiddleware.php」を作成して下さい。

BasicAuthMiddleware.php」は手動で作成するか、以下のartisanコマンドで作成できます。

php artisan make:middleware BasicAuthMiddleware

 
作成したら、以下のソースを記述して下さい。

Http/Middleware/BasicAuthMiddleware.php

<?php

namespace App\Http\Middleware;

use Closure;

class BasicAuthMiddleware
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        switch (true) {
            case !isset($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']):
            case $_SERVER['PHP_AUTH_USER'] !== 'ユーザー名':
            case $_SERVER['PHP_AUTH_PW']   !== 'パスワード':
                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);
    }
}

 
■ 手順2
「Http/Kernel.php」の「$routeMiddleware」に下記を追加して下さい。

Http/Kernel.php

'basicauth' => 'App\Http\Middleware\BasicAuthMiddleware',

 
■ 手順3
「routes/web.php」にBasic認証をかけたいルーティングの設定を記述して下さい。

routes/web.php

Route::group(['middleware' => 'basicauth'], function() {
    //ここにBasic認証をかけたいルーティングの設定を記述して下さい
    //例
    Route::get('/', 'PageController@home')->name('page.home');
});