Laravel学習帳

Laravel5.2の学習帳です。開発環境はXAMPP for Windows 5.6.19 / 本番環境はさくらサーバー(スタンダード)

実践知識

ベーシック認証(自作)について

2017/03/15

Laravel5.2ではミドルウェアでベーシック認証が提供されているのでそれを使います。

しかしデフォルトで用意されているベーシック認証はDBのテーブルを参照するので使いづらいのが本音です。

認証を安易にするには新たにミドルウェアを作成することになります。

今回はLaravel5.2でベーシック認証用のミドルウェアを作成し実装させます。

 

目的

Laravelで作成したビューファイルにアクセスすると。。

ベーシック認証が表示される。認証に失敗すると

エラー画面が表示。

認証が通ればビューファイルにアクセスできます。

 

手順

【1】ミドルウェアの作成

【2】ミドルウェアの登録

【3】ルーティングの設定

 

【1】ミドルウェアの作成

app/Http/Middleware にベーシック認証用のミドルウェアを作成します。

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

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Response;

class AdminAuthenticate
{
  /**
  * Handle an incoming request.
  *
  * @param \Illuminate\Http\Request $request
  * @param \Closure $next
  * @return mixed
  */
  public function handle($request, Closure $next)   #1)
  {
     $user = $request->getUser();
     $pass = $request->getPassword();
        if($user == '<※ベーシック認証のID>' && $pass = '<※ベーシック認証のパス>'){
           return $next($request);   #2)
        }

     $headers = ['WWW-Authenticate' => 'Basic'];
        return new Response('Invalid credentials.', 401, $headers);
  }
}
【解説】
1) handleメソッドの中で、アプリケーションの次に進むかどうかを判断しています。
2) アプリケーションを次に進めるには、$nextコールバックを呼び出します。

 

【2】ミドルウェアの登録

app/Http/Kernel.php$routeMiddleware

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

'auth.admin' => \App\Http\Middleware\AdminAuthenticate::class,

 

【3】ルーティングの設定

全てのページにベーシック認証をかけます。

Route::group(['middleware' => 'auth.admin'], function(){

  #CRUDアプリ
  Route::resource('users', 'UsersController');

  #メール送信
  Route::get('mail', 'MailController@index');
  Route::post('mail','MailController@confirm');
  Route::post('mail/complete','MailController@complete');

});

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

以上です。

 

-実践知識