最新の Web アプリケーションでは、ユーザー パスワードのリセットは不可欠な機能です。適切に設計されたパスワード リセット プロセスは、ユーザーのアカウントのセキュリティを確保するだけでなく、ユーザー エクスペリエンスも向上します。 Laravel は人気のある PHP Web 開発フレームワークであり、便利なパスワード リセット システムも統合されています。この記事ではLaravelを使ってパスワードリセット機能を実装する方法を紹介します。
#環境の準備
始める前に、次のインストールが完了していることを確認してください:composer create-project --prefer-dist laravel/laravel project-name
パスワードリセットプロセス
Laravelのパスワードリセットプロセスは電子メール通知に基づいており、手順は次のとおりです:
ユーザーは電子メールアドレスとリンクを送信します。パスワードをリセットする必要があるアプリケーション。プログラム;
メール設定
まず、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 はメール サービスを指定します使用プロバイダー smtp、
mailgun、
sendmail などのプロバイダー。ここでは、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'), ],
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('password.email') }}"> @csrf <div> <input type="email" name="email" value="{{ old('email') }}" required autofocus placeholder="请输入您的邮箱地址"> </div> <div> <button type="submit">发送重置密码链接</button> </div> </form>
$token
とResetPasswordController@showResetForm
で取得できます。コントローラー ロジック
パスワード リセット操作を処理するために、ルーティングで 2 つのコントローラー (
ForgotPasswordController
ResetPasswordController) を使用します。
ForgotPasswordController ユーザーが電子メール アドレスを入力するためのフォームを表示する
showLinkRequestForm() メソッドを提供します。別のメソッド
sendResetLinkEmail()
Password::sendResetLink() メソッドは、リセット リンクを処理するために使用されます。を生成して送信します。
ResetPasswordController
の
showResetForm() メソッドは、ユーザーが新しいパスワードを入力するためのフォームを表示します。リセット リンクが不正な場合は、リセット リンクに戻ります。電子メールリンクの有効期限切れプロンプトページ。
reset()
Password::reset() メソッドは、ユーザーのパスワードを更新するために使用されます。データベース。
<form method="POST" action="{{ route('password.update') }}" > @csrf <input type="hidden" name="token" value="{{ $token }}"> <div> <label for="email-input">邮箱</label> <input type="email" name="email" value="{{ $email ?? old('email') }}" 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へのパスワードリセット関数の実装が完了したので、実装した関数を使ってパスワードをリセットしてみましょう。リセット:
アプリケーションのログイン ページを開き、[パスワードを忘れた場合] をクリックします。 登録した電子メール アドレスを入力し、[パスワード リセット リンクを送信] ボタンをクリックします。
開くメールアドレスを入力して、パスワード リセット リンクを見つけてクリックします。
この記事では、Laravelを使用して基本的なパスワードリセット機能を実装する方法を紹介します。最新の Web アプリケーションでは、パスワード リセットは必須の機能であり、適切に設計および実装されたパスワード リセット プロセスのみが、ユーザー アカウントとユーザー エクスペリエンスのセキュリティを確保できます。この記事で説明するテクニックを学び、完全なパスワード リセット機能を実装すると、ユーザーのパスワードのセキュリティとユーザー エクスペリエンスが向上すると思います。
以上がLaravelでパスワードリセット機能を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。