ホームページ > PHPフレームワーク > Laravel > Laravelでパスワードリセット機能を実装する方法

Laravelでパスワードリセット機能を実装する方法

PHPz
リリース: 2023-04-21 11:19:11
オリジナル
1260 人が閲覧しました

最新の Web アプリケーションでは、ユーザー パスワードのリセットは不可欠な機能です。適切に設計されたパスワード リセット プロセスは、ユーザーのアカウントのセキュリティを確保するだけでなく、ユーザー エクスペリエンスも向上します。 Laravel は人気のある PHP Web 開発フレームワークであり、便利なパスワード リセット システムも統合されています。この記事ではLaravelを使ってパスワードリセット機能を実装する方法を紹介します。

#環境の準備

始める前に、次のインストールが完了していることを確認してください:

    PHP 7.2 以降
  • Composer 2 以降
  • #Laravel 5.5 以降
  • #Laravel をインストールしていない場合は、次のコマンドを使用してターミナルにインストールできます:
composer create-project --prefer-dist laravel/laravel project-name
ログイン後にコピー

パスワードリセットプロセス

Laravelのパスワードリセットプロセスは電子メール通知に基づいており、手順は次のとおりです:

ユーザーは電子メールアドレスとリンクを送信します。パスワードをリセットする必要があるアプリケーション。プログラム;

    アプリケーションは、リセット リンクを含む電子メールをユーザーのメールボックスに送信します。
  1. ユーザーは電子メール リンクにアクセスします。
  2. アプリケーションは、リンクの有効期限が切れており、合法であるかどうかを判断します。
  3. リンクが合法である場合、パスワードを入力するためのフォームがページに表示されます;
  4. ユーザーは新しいパスワードを入力します;
  5. ユーザーがフォームを送信します;
  6. アプリケーションはユーザーのパスワードをリセットします。
  7. したがって、このプロセスの各ステップを実装する必要があります。

メール設定

まず、Laravel でメールを設定する必要があります。 .env

ファイルを開き、次の構成をその中に追加します:

MAIL_DRIVER=smtp
MAIL_HOST=smtp.mxhichina.com
MAIL_PORT=25
MAIL_USERNAME=youremail@example.com
MAIL_PASSWORD=yourpassword
MAIL_FROM_ADDRESS=youremail@example.com
MAIL_ENCRYPTION=
ログイン後にコピー
ここの構成は実際の状況に応じて変更する必要があります。MAIL_DRIVER はメール サービスを指定します使用プロバイダー

smtpmailgunsendmail などのプロバイダー。ここでは、Alibaba Cloud 電子メール サービス プロバイダー smtp.mxhichina.com## を使用します。 #、電子メールのユーザー名とパスワードを入力する必要があります。 MAIL_FROM_ADDRESS 電子メールを送信するための送信アドレスを指定するために使用されます。 次に、送信者の名前とアドレスの設定など、config/mail.php ファイルで電子メール送信オプションを構成する必要があります。ルーティングの構成

次に、パスワード リセット操作を処理するためにルーティングを構成する必要があります。 Laravel では、組み込みのパスワード コントローラーを使用して、パスワードをリセットするロジックを処理できます。 routes/web.php

ファイルを開き、次のルートを追加します。

'from' => [
    'address' => env('MAIL_FROM_ADDRESS', 'youremail@example.com'),
    'name' => env('MAIL_FROM_NAME', 'Your Name'),
],
ログイン後にコピー
ここでは、Auth で 2 つのコントローラー、つまり

ForgotPasswordController と を使用します。 ResetPasswordController

は、パスワード リセット電子メールの送信とパスワード リセット操作をそれぞれ処理します。

ビュー構成次に、ユーザーが電子メールとパスワードを入力するためのフォームを表示するビューを追加する必要があります。次のコード スニペットのような Blade テンプレート コードを使用して、次のことを実現できます:

// Password Reset Routes
Route::get('password/reset', 'Auth\ForgotPasswordController@showLinkRequestForm')->name('password.request');
Route::post('password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail')->name('password.email');
Route::get('password/reset/{token}', 'Auth\ResetPasswordController@showResetForm')->name('password.reset');
Route::post('password/reset', 'Auth\ResetPasswordController@reset');
ログイン後にコピー
このページでは、フォームを使用してユーザーが入力した電子メール アドレスを受け入れ、送信ボタンを追加します。この電子メール アドレスにパスワード リセット リンクを送信します。

ユーザーが新しいパスワードを入力できるようにする別のビューを追加する必要もあります。次のようなコード スニペットを使用して、このようなフォームを実装できます。

<form method="POST" action="{{ route(&#39;password.email&#39;) }}">
    @csrf
    <div>
        <input type="email" name="email" value="{{ old(&#39;email&#39;) }}" required autofocus placeholder="请输入您的邮箱地址">
    </div>
    <div>
        <button type="submit">发送重置密码链接</button>
    </div>
</form>
ログイン後にコピー
このフォームでは、ユーザーは新しいパスワードを入力してパスワードを確認する必要があり、

$token

$email

リセット リンクが正当かどうかを確認するためのパラメーター。これらのパラメータは、

ResetPasswordController@showResetForm

で取得できます。

コントローラー ロジックパスワード リセット操作を処理するために、ルーティングで 2 つのコントローラー (ForgotPasswordController

ResetPasswordController) を使用します。

ForgotPasswordController ユーザーが電子メール アドレスを入力するためのフォームを表示する showLinkRequestForm() メソッドを提供します。別のメソッド sendResetLinkEmail()

は、パスワード リセット リンクを含む電子メールを、ユーザーが指定した電子メール アドレスに送信します。

Password::sendResetLink() メソッドは、リセット リンクを処理するために使用されます。を生成して送信します。 ResetPasswordControllershowResetForm() メソッドは、ユーザーが新しいパスワードを入力するためのフォームを表示します。リセット リンクが不正な場合は、リセット リンクに戻ります。電子メールリンクの有効期限切れプロンプトページ。 reset()

メソッドは、ユーザーがパスワード リセット フォームに記入して送信するロジックを処理します。

Password::reset() メソッドは、ユーザーのパスワードを更新するために使用されます。データベース。

<form method="POST" action="{{ route(&#39;password.update&#39;) }}" >
    @csrf
    <input type="hidden" name="token" value="{{ $token }}">
    <div>
        <label for="email-input">邮箱</label>
        <input type="email" name="email" value="{{ $email ?? old(&#39;email&#39;) }}" required autofocus>
    </div>
    <div>
        <label for="password-input">新密码</label>
        <input type="password" name="password" required>
    </div>
    <div>
        <label for="password-confirm-input">确认新密码</label>
        <input type="password" name="password_confirmation" required>
    </div>
    <div>
        <button type="submit">重置密码</button>
    </div>
</form>
ログイン後にコピー
パスワードリセット関数の使い方Laravelへのパスワードリセット関数の実装が完了したので、実装した関数を使ってパスワードをリセットしてみましょう。リセット:

アプリケーションのログイン ページを開き、[パスワードを忘れた場合] をクリックします。 登録した電子メール アドレスを入力し、[パスワード リセット リンクを送信] ボタンをクリックします。

開くメールアドレスを入力して、パスワード リセット リンクを見つけてクリックします。

    新しいパスワードを入力し、新しいパスワードを確認します。
  1. 送信ボタンをクリックします。
  2. すべてがうまくいけば、パスワードは正常にリセットされました。
  3. 要約
  4. この記事では、Laravelを使用して基本的なパスワードリセット機能を実装する方法を紹介します。最新の Web アプリケーションでは、パスワード リセットは必須の機能であり、適切に設計および実装されたパスワード リセット プロセスのみが、ユーザー アカウントとユーザー エクスペリエンスのセキュリティを確保できます。この記事で説明するテクニックを学び、完全なパスワード リセット機能を実装すると、ユーザーのパスワードのセキュリティとユーザー エクスペリエンスが向上すると思います。

以上がLaravelでパスワードリセット機能を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート