ミドルウェアを使ってのベーシック認証の作成

2019/08/26

Laravelではミドルウェアでベーシック認証が用意に作成することができます。

今回はミドルウェアを使ってベーシック認証を作成する記事をエントリーします。

 

完成形

 

手順

 

1.ミドルウェアの作成

artisanコマンドでミドルウェアのスケルトンを作成。

コマンドを実行するとapp/Http/Middlewareにミドルウェアが作成されます。


// 『AdminAuthenticate』という名前でミドルウェアを作成
php artisan make:middleware AdminAuthenticate

 

中身を以下のように入れていきます。

ファイル名をAdminAuthenticate.phpとします。


    public function handle($request, Closure $next)
    {
        // ベーシック認証で入力されたIDとPASS
        $user = $request->getUser();
        $pass = $request->getPassword();

        // IDとPASSが一致していればコントローラのアクションへ
        // 例:ID → laraweb / pass → laraweb
        if($user == 'laraweb' && $pass = 'laraweb'){
            return $next($request);
        }

        // 間違っていたら401
        $headers = ['WWW-Authenticate' => 'Basic'];
        return new Response('Invalid credentials.', 401, $headers);
    }

 

解説

handleメソッドの中で、アプリケーションの次に進むかどうかを判断しています。

アプリケーションを次に進めるには、$nextコールバックを呼び出します。

 

2.ミドルウェアの登録

app/Http/Kernel.php$routeMiddleware

先ほど作ったベーシック認証用のミドルウェアを登録します。


    protected $routeMiddleware = [
         :
        'auth.admin' => \App\Http\Middleware\AdminAuthenticate::class, // ←これ
    ];

 

 

3.ルーティングの設定

ルーティングにて必要なページにベーシック認証をかけます。


Route::group(['middleware' => 'auth.admin'], function() { //ベーシック認証
    Route::get('csv/practice', 'CsvDownloadController@practice');
});

 

これでベーシック認証がかかるようになります。

以上です。

 
なお、Laravel のミドルウェアについて理解を深めたい方は PHPフレームワーク Laravel入門 をお勧めします。Chapter4.1に『ミドルウェアの利用』についての解説があります。

ユニットテストの掲載ページ

Chapter 4 リクエスト・レスポンスを補完する
4.1 ミドルウェアの利用
4.2 バリデーション
4.3 バリデーションをカスタマイズする
4.4 その他のリクエスト・レスポンス処理

本庄マサノリ

仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら

>> Twitter をフォローする

 

-実践知識