3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

LaravelAdvent Calendar 2024

Day 2

【Laravel11】LaravelでBasic認証を使う方法

Last updated at Posted at 2024-12-01

Laravel Advent Calendar 2024 の2日目です :muscle:

こんにちは :smiley: tatata-keshiです :bangbang:

今回は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認証を利用することができます :thumbsup:

参考文献

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?