Laravel Advent Calendar 2024 の2日目です
こんにちは tatata-keshiです
今回はLaravelでBasic認証の実装をする方法を紹介します。
1. ミドルウェアの作成
まず、Basic認証を処理するミドルウェアを作成します。ターミナルで以下のコマンドを実行してください。
php artisan make:middleware BasicAuthMiddleware
app/Http/Middleware
ディレクトリに BasicAuthMiddleware.php
が作成されます。
2. ミドルウェアの実装
以下のようにミドルウェアを実装していきます。
BasicAuthMiddleware.php
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
class BasicAuthMiddleware
{
/**
* Handle an incoming request.
*
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
*/
public function handle(Request $request, Closure $next): Response
{
$user = env('BASIC_AUTH_USER');
$pass = env('BASIC_AUTH_PASS');
if ($request->getUser() !== $user || $request->getPassword() !== $pass) {
$headers = ['WWW-Authenticate' => 'Basic'];
return response('Invalid credentials.', 401, $headers);
}
return $next($request);
}
}
3. 環境変数の設定
Basic認証のuserとpasswordを環境変数に追加しておきます。
BASIC_AUTH_USER={ユーザーネーム}
BASIC_AUTH_PASS={パスワード}
4. ミドルウェアの登録
このミドルウェアはアプリケーションがHTTPリクエストを受信するたびに実行させたいので、boostrap/app.php
のグローバルミドルウェアスタックにミドルウェアを追加します。
->withMiddleware(function (Middleware $middleware) {
$middleware->append(\App\Http\Middleware\BasicAuthMiddleware::class);
})
これにより、LaravelアプリケーションでBasic認証を利用することができます