はじめに
こんにちは、エンジニアの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認証をかけるかどうかを変えることができるようになりました。
この記事での質問や、間違っている、もっといい方法があるといったご意見などありましたらご指摘していただけると幸いです。
最後まで読んでいただきありがとうございました!
参考