パスワードを再設定する


ビュー

ほとんどの Web アプリケーションは、ユーザーにパスワードをリセットする機能を提供します。すべてのアプリケーションでこの機能を再実装することを強制するのではなく、Laravel はパスワードリマインダーを送信し、パスワードをリセットするための便利な方法を提供します。

{note} Laravel のパスワード リセット機能を使用する前に、ユーザー モデルは
Illuminate\Notifications\Notifiable

トレイトを使用する必要があります。

データベースに関する注意事項

まず、App\User モデルが Illuminate\Contracts\Auth\CanResetPassword コントラクトを実装していることを確認します。もちろん、フレームワークに含まれる App\User モデルはすでにこのインターフェイスを実装しており、インターフェイスの実装に必要なメソッドを含めるために Illuminate\Auth\Passwords\CanResetPassword 特性を使用しています。 。

リセット トークンを生成するためのテーブルの移行

次に、パスワード リセット トークンを保存するためのデータ テーブルを作成する必要があります。このデータテーブルの移行は、Laravel アプリケーションの database/migrations ディレクトリに含まれています。したがって、必要なのはデータベース移行コマンドを実行することだけです。

php artisan migrate

##routing

Laravel はすでに # にあります。 ## Auth\ForgotPasswordController

クラスと Auth\ResetPasswordController クラスには、パスワード リセット リンク電子メールを送信し、ユーザーのパスワードをリセットするためのロジックが含まれています。パスワード リセットの実行に必要なすべてのルートは、Artisan コマンド make:auth:

php artisan make:auth

を使用して生成できます。ビュー

make:auth

コマンドを実行すると、Laravel はパスワードをリセットするために必要なすべてのビューを生成します。これらのビューは、resources/views/auth/passwords ディレクトリにあります。アプリケーションのニーズに応じて、これらのビューを自由に変更できます。

#パスワードのリセット後
ユーザー パスワードをリセットするためのルートとビューを定義したら、次のことができます。ブラウザで

/password/reset

ルートにアクセスしてパスワードをリセットします。フレームワークの

ForgotPasswordController には、パスワード リセット リンクの電子メールを送信するロジックがすでに含まれており、ResetPasswordController にはユーザー パスワードをリセットするロジックが含まれています。 パスワードをリセットすると、ユーザーは自動的にログインし、/home

にリダイレクトされます。

ResetPasswordControllerredirectTo プロパティを定義することで、パスワード リセット後のリダイレクトの場所をカスタマイズできます:

protected $redirectTo = '/dashboard';
{note} デフォルトでは、パスワード リセット トークン1 時間後に期限切れになります。これは、

config/auth.php
ファイルのパスワード リセット

expire オプションを使用して変更できます。

カスタム

カスタム認証ウォッチャー

auth.php

構成ファイルでは、複数の「ウォッチャー」を構成できます。これを使用して、複数のユーザー テーブルの認証動作を定義できます。フレームワークで

ResetPasswordController をカスタマイズし、コントローラーの guard メソッドをオーバーライドすることで、選択したガードを使用できます。このメソッドはガード インスタンスを返す必要があります:

use Illuminate\Support\Facades\Auth;protected function guard(){ 
   return Auth::guard('guard-name');
 }

カスタム パスワード プロキシ

auth.php 構成ファイルでは、複数のユーザー テーブルのパスワードをリセットするために使用できる複数のパスワード「プロキシ」を構成できます。コントローラーの broker メソッドをオーバーライドして、選択したブローカーを使用することで、フレームワークの ForgotPasswordControllerResetPasswordController をカスタマイズできます:

use Illuminate\Support\Facades\Password;
/**
 * 获取在密码重置期间使用的代理。
 *
 * @return PasswordBroker
 */
 protected function broker(){  
   return Password::broker('name');
 }

カスタム パスワード リセット メール

パスワード リセット リンクをユーザーに送信するために使用される通知クラスを簡単に変更できます。まず、User モデルの sendPasswordResetNotification メソッドをオーバーライドします。このメソッドでは、任意の通知クラスを使用して通知を送信できます。このメソッドで受け取られる最初のパラメーターは、パスワード リセット トークン $token:

/**
 * 发送密码重置通知。
 *
 * @param  string  $token
 * @return void
 */
 public function sendPasswordResetNotification($token){ 
    $this->notify(new ResetPasswordNotification($token));
 }
この記事は、LearnKu.com Web サイトで最初に公開されました。