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

Basic認証を掛ける時は通常、Apache や nginx など web サーバ側で設定を行いますが、Laravel から、いわゆるアプリケーション側からも Basic認証を設定する事が出来ます。
今回は、Basic認証パッケージ「l5-very-basic-auth 」を用いて、Laravel で Basic認証を設定します。
Contents
開発環境
今回の開発環境は以下の通りです。
- 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 の最新バージョンにも素早く対応しているので、これからずっと使えるパッケージです。気軽に導入出来て便利なので、是非試してみてください。