ホーム > Laravel > 【Laravel】パスワード確認の機能を使う方法
Laravel

【Laravel】パスワード確認の機能を使う方法

いつもご利用ありがとうございます。
この記事には広告が掲載されており、その広告費によって運営しています。

Laravel でパスワード確認の機能を使う方法についてまとめました。

はじめに

パスワード確認機能は、パスワード確認をしてから一定時間経ったユーザーに対して、一部の機能を使う際には改めてパスワード確認を行うというものです。

よりセキュアにユーザーに情報を入力させたい時に使える機能です。

例えば個人情報の更新であったり、クレカ情報とか絶対に漏洩してはいけない情報を扱う際には、パスワード確認機能を付けたくなります。

この機能が Breeze や Jetstream であればデフォルトで備わっており、少し調整するだけで使用することができます。

環境

Laravel 11
Breeze

実装方法

パスワード確認ページ

デフォルトでは、/confirm-passwordに URL が指定されています。

routes/auth.php

    Route::get('confirm-password', [ConfirmablePasswordController::class, 'show'])
        ->name('password.confirm');

    Route::post('confirm-password', [ConfirmablePasswordController::class, 'store']);

で、指定されています。

breeze confirm password

このページで改めてパスワードを入力すると、パスワードが入力された時間が記録され、時間内であれば機能を使えます。

パスワード確認の有効時間の変更

config/auth.php

'password_timeout' => env('AUTH_PASSWORD_TIMEOUT', 10800),

に設定されており、デフォルトだと3時間みたいです。

もし変更したい場合は、.env

AUTH_PASSWORD_TIMEOUT=7200

などと追記して変更しましょう。

リダイレクト先の変更

リダイレクトは、

Route::post('confirm-password', [ConfirmablePasswordController::class, 'store']);

に書かれている通り、app/Http/Controllers/Auth/ConfirmablePasswordController.phpstore()内にて、

return redirect()->intended(route('dashboard', absolute: false));

と書かれた部分がリダイレクト先です。

なので、もとのリクエストに戻すようなリダイレクトを書くと複数の機能に使えると思います。

return redirect()->intended(); // 元のリクエストへリダイレクト

ルーティングの書き方

パスワード確認をしたい機能やページでは、以下のようにpassword.confirmミドルウェアを通すことでパスワード確認の機能が使えます。

Route::middleware('auth')->group(function () {
    //略
    Route::middleware('password.confirm')->group(function () {
        Route::get('/secure', [SecureController::class, 'index'])->name('secure.index');
    });
});

以上、簡単にパスワード確認の機能をつけることができました。

とてもありがたい機能だと思いました。

誰かの参考になれば幸いです。

フィードバックのお願い
この記事のフィードバックがありましたらYoutubeの適当な動画にコメントしていただいたり、お問い合わせからご連絡ください。