1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

LaravelでBasic認証をかける方法

Posted at

はじめに

こんにちは、エンジニアのkeitaMaxです。

今回は、Laravel10でBasic認証のかけ方を記事にします。

middlewareの作成

以下のコマンドでBasic認証ようのミドルウェアを作成します。

php artisan make:middleware BasicAuthMiddleware

作成されたBasicAuthMiddlewareを以下のように編集します。

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
    {
        if (config('app.is_basicauth')) {
            $username = $request->getUser();
            $password = $request->getPassword();

            if ($username == config('app.basicauth_user') && $password == config('app.basicauth_password')) {
                return $next($request);
            }
            header('WWW-Authenticate: Basic realm="Sample Private Page"');
            header('Content-Type: text/plain; charset=utf-8');
            abort(401, "Enter username and password.");
        } else {
            return $next($request);
        }
    }
}

今回は、.envファイルにパスワードとユーザー名、ベーシック認証をかけるかどうかを設定できるようにしました。

.envファイル

.envは以下を追加しました。

IS_BASICAUTH=true
BASICKAUTH_USER=user
BASICAUTH_PASSWORD=pass

routeの修正

以下のように作成したミドルウェアで定義しているルーティングを囲います。

Route::group(['middleware' => 'basicauth'], function () {
    // ここに他のルーティングを定義
})

カーネルに追加

作成したミドルウェアをカーネルに登録します。

Kernel
    protected $middlewareAliases = [
        // ~~~
        'basicauth' => \App\Http\Middleware\BasicAuthMiddleware::class,
    ];

これで準備完了で、アクセスをするとBasic認証がかかっているかと思います。

おわりに

これで環境ごとにBasic認証をかけるかどうかを変えることができるようになりました。

この記事での質問や、間違っている、もっといい方法があるといったご意見などありましたらご指摘していただけると幸いです。

最後まで読んでいただきありがとうございました!

参考

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?