ホームページ >バックエンド開発 >PHPチュートリアル >Laravelのパスワードリセット機能の実装方法

Laravelのパスワードリセット機能の実装方法

小云云
小云云オリジナル
2018-02-24 09:24:041523ブラウズ

この機能をすぐに実装したいですか?新しくインストールした Laravel アプリケーションで phpArtisan make:auth を実行し (このコマンドをすでに実行している場合は無視して構いません)、http://your-app.dev/register またはアプリケーションに割り当てられているその他のディレクトリにアクセスします。ブラウザの URL を使用すると、このコマンドにより、パスワードのリセットを含む、ユーザーのログインと登録に必要なものがすべて生成されます。

ほとんどの Web アプリケーションはユーザーにパスワードをリセットする機能を提供しており、Laravel も例外ではなく、各アプリケーションでパスワードをリセットする必要がなく、パスワード リセット リンクを送信し、パスワード リセット ロジックを実装するための便利な方法を提供します。

注: Laravel が提供するパスワード リセット関数を使用する前に、User モデルは IlluminateNotificationsNotifiable トレイトを使用する必要があります。

データベース関連

開始する前に、AppUser モデルが IlluminateContractsAuthCanResetPassword コントラクトを実装していることを確認してください。もちろん、Laravel 独自の AppUser モデルはすでにこのインターフェイスを実装しており、IlluminateAuthPasswordsCanResetPassword トレイトを使用して、このインターフェイスの実装に必要なメソッドを含めています。

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

次に、パスワードリセットトークンを保存するために使用されるテーブルを作成する必要があります。Laravel にはこのテーブルの移行が付属しており、database/migrations ディレクトリに保存されます。したがって、あなたがしなければならないのは、移行を実行することだけです:

php職人移行

このテーブルはpassword_resetsです:

routing

LaravelにはAuthForgotPasswordControllerとAuthResetPasswordControllerコントローラーが付属しています(これら2つのコントローラークラスは、によって自動的に生成されます) php 職人の make:auth コマンド)、パスワード リセット リンクの電子メールの送信とユーザー パスワードのリセット機能にそれぞれ使用されます。パスワードのリセットに必要なルートは、make:auth コマンドによって自動的に生成されています:

php 職人 make:auth

対応するルートは、IlluminateRoutingRouter の auth メソッドで定義されています:

View

は同じですパスワードの設定に必要なビュー ファイルも、make:auth コマンドによって生成されます。これらのビュー ファイルは、必要に応じて

resources/views/auth/passwords ディレクトリにあります。

パスワードのリセット

ユーザー パスワードのリセット ルートとビューを定義した後は、ブラウザの /password/reset を介してこのエントリ ルートにアクセスするだけで済みます。フレームワークに付属する ForgotPasswordController には、パスワード リセット リンクの電子メールを送信するロジックがすでに含まれており、ResetPasswordController には、ユーザー パスワードをリセットするロジックが含まれています:

登録電子メールを入力し、[パスワード リセット リンクの送信] をクリックして、パスワード リセット リンクを送信します。このメール アドレスにアクセスします:


メールを開くと、次のようなパスワード リセット メールが届きます:

パスワード リセット ボタンをクリックして、パスワード リセット ページに入ります:

フォームに記入して送信すると、パスワードをリセットできます。

パスワードがリセットされると、ユーザーは自動的にアプリケーションにログインし、/home にリダイレクトされます。 ResetPasswordController の redirectTo 属性を定義することで、パスワードのリセットが成功した後のリダイレクト リンクをカスタマイズできます:

protected $redirectTo = '/dashboard';

注: デフォルトでは、パスワード リセット トークンは 1 時間有効です。時間は、config/auth.php ファイルの有効期限オプションを変更することで変更できます。

カスタマイズ

カスタマイズされた認証ガード

構成ファイル auth.php で、複数の「ガード」を構成して、マルチユーザー テーブルに基づいて独立した認証を実装できます。組み込みの ResetPasswordController コントローラーをオーバーライドできます。選択したガード メソッド。このメソッドはガード インスタンスを返します。

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

カスタム パスワード ブローカー

設定ファイル auth.php で、ユーザー テーブルの複数のパスワードをリセットするために複数のパスワードを設定できます。組み込みの ForgotPasswordController および ResetPasswordController コントローラーのブローカー メソッドをオーバーライドすることで、選択したブローカーを使用できます。この関数を実装するには、User モデルの sendPasswordResetNotification メソッドをオーバーライドする必要があります。このメソッドでは、通知クラスで任意の通知を送信できます。このメソッドで受け取ったのは、パスワード リセット $token:

/**
 * 获取密码重置期间所使用的broker.
 *
 * @return PasswordBroker
 * @translator laravelacademy.org
 */
protected function broker()
{
  return Password::broker('name');
}

関連する推奨事項:

mysql root パスワード リセット メソッドを忘れました

MySQL の root パスワードをリセットする 3 つのステップ

mysql データベースの root ユーザーのパスワードを忘れた場合のリセット方法_MySQL

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。