1. Home
  2. PHP
  3. Laravel
  4. LaravelでBasic認証~全体/一部にアプリケーションから側から気軽に設定する~

LaravelでBasic認証~全体/一部にアプリケーションから側から気軽に設定する~

  • 公開日
  • 更新日
  • カテゴリ:Laravel
  • タグ:PHP,Laravel,l5-very-basic-auth
LaravelでBasic認証~全体/一部にアプリケーションから側から気軽に設定する~

Basic認証を掛ける時は通常、Apache や nginx など web サーバ側で設定を行いますが、Laravel から、いわゆるアプリケーション側からも Basic認証を設定する事が出来ます。

今回は、Basic認証パッケージ「l5-very-basic-auth 」を用いて、Laravel で Basic認証を設定します。

Contents

  1. 開発環境
  2. l5-very-basic-auth
  3. インストール
  4. サービスプロパイダーへ登録
  5. 設定ファイル
  6. ルーティング
  7. 動作確認

開発環境

今回の開発環境は以下の通りです。

  • CentOS 7
  • Apache 2.4
  • PHP 7.2/7.1
  • Laravel

Laravel のバージョンについては 、5.7/5.6/5.5/5.4/5.3 にて動作確認済みです。

Laravel のルートディレクトリを「laravel/」としています。

l5-very-basic-auth

l5-very-basic-auth は、Laravel 用の Basic認証パッケージです。パッケージ名に「5 」とついていますが、4 系でも使えます。(導入・設定方法は 5 系と異なります)

ちなみに Laravel には標準で auth.basic が提供されていますが、データベースを必要とします。このパッケージは DB を使う事なく Basic認証を導入できるので、その点で気軽に使う事ができます。

インストール

composer でパッケージを導入していきます。 laravel のルートディレクトリへ移動し、以下のコマンドを叩きます。

# Laravel のルートディレクトリへ移動
cd /path/to/laravel

# composer コマンドでパッケージのインストール
composer require olssonm/l5-very-basic-auth:5.*

# 実行結果
[demo@localhost laravel]$ composer require olssonm/l5-very-basic-auth:5.*
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
  - Installing olssonm/l5-very-basic-auth (v5.4): Downloading (100%)         
Writing lock file
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover
Discovered Package: fideloper/proxy
Discovered Package: laravel/dusk
Discovered Package: laravel/tinker
Discovered Package: nunomaduro/collision
Discovered Package: olssonm/l5-very-basic-auth
Package manifest generated successfully.

コマンド末尾、「:」コロンの後には、Laravel のバージョンに応じたパッケージのバージョンを付けます。各バージョンの指定は以下の通りです。

  • 5.1/5.2 → 1.*
  • 5.3 → 2.*
  • 5.4/5.5/5.5/5.6/5.7 → 5.*

composer.json でパッケージが追加されているのが確認できます。

"require": {
    "php": "^7.1.3",
    "fideloper/proxy": "^4.0",
    "guzzlehttp/guzzle": "^6.3",
    "laravel/framework": "5.7.*",
    "laravel/tinker": "^1.0",
    "olssonm/l5-very-basic-auth": "5.*" // ← ココ
},

サービスプロパイダーへ登録

このパッケージをサービスプロパイダーへ登録します。

laravel/config/app.php
'providers' => [
    // l5-very-basic-auth
    Olssonm\VeryBasicAuth\VeryBasicAuthServiceProvider::class,
],

設定ファイル

まずは設定ファイルを生成します。下記の artisan コマンドを叩きます。

# Laravel のルートディレクトリへ移動
cd /path/to/laravel

# 設定ファイルの公開
php artisan vendor:publish --provider="Olssonm\VeryBasicAuth\VeryBasicAuthServiceProvider"

# 実行結果
[demo@localhost laravel]$ php artisan vendor:publish --provider="Olssonm\VeryBasicAuth\VeryBasicAuthServiceProvider"
Copied File [/vendor/olssonm/l5-very-basic-auth/src/config.php] To [/config/very_basic_auth.php]
Publishing complete.

laravel/config 配下に very_basic_auth.php が生成されます。

laravel
├─ config
|  ├─ very_basic_auth.php

設定を行います。ここで Basic認証で使うユーザ名やパスワードなどを設定します。

laravel/config/very_basic_auth.php
<?php

    /**
     * Configuration for the "HTTP Very Basic Auth"-middleware
     */
    return [
        // Username
        'user'              => 'user_name',

        // Password
        'password'          => 'my_password',

        // Environments where the middleware is active. Use "*" to protect all envs
        'envs'              => [
            '*'
        ],

        // Message to display if the user "opts out"/clicks "cancel"
        'error_message'     => 'You have to supply your credentials to access this resource.',

        // Message to display in the auth dialiog in some browsers (mainly Internet Explorer).
        // Realm is also used to define a "space" that should share crentials.
        'realm'             => 'Basic Auth',

        // If you prefer to use a view with your error message you can uncomment "error_view".
        // This will superseed your default response message
        // 'error_view'        => 'very_basic_auth::default'
    ];
user
ユーザ名
password
パスワード
envs
どの環境で動作するかを設定します。デフォルトはアスタリスクで全ての環境が設定されています。環境を絞る場合は配列の形で env ファイルに記述している環境名を記述します。
'envs' => [
    'production',
    'testing',
    'development',
    'local'
],
error_messageBasic
認証に失敗した時に表示するメッセージ
error_view
エラーメッセージではなく view を使う場合はコメントアウトを外します。

ルーティング

最後に、ルーティングを設定します。

laravel/routes/web.php
Route::group(['middleware' => 'auth.very_basic'], function() {

Route::get('/', function () { return view('welcome'); });

});

Basic認証を掛けたいルーティングをこの中に入れる事で対象とします。

動作確認

ブラウザからアクセスしてみます。

ダイアログが出力され、Basic認証がかかっている事が確認できました。

まとめ

以上で作業は完了です。このパッケージの良いところは、サーバや DB の設定が不要で、気軽にベーシック認証を導入できるところです。 また、ベーシック認証の導入箇所を自由にルーティングできる事から、使い勝手も良く、便利です。 laravel の最新バージョンにも素早く対応しているので、これからずっと使えるパッケージです。気軽に導入出来て便利なので、是非試してみてください。

Author

rito

  • Backend Engineer
  • Tokyo, Japan
  • PHP 5 技術者認定上級試験 認定者
  • 統計検定 3 級