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 を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら。