Hyperf フレームワークを使用してパスワードをリセットする方法
はじめに: パスワードのリセットは、Web サイトまたはアプリケーションの一般的な機能の 1 つです。ユーザーがパスワードを忘れた場合、またはパスワードが必要な場合パスワードを変更する場合、パスワードのリセット機能を使用すると、ユーザーは新しいパスワードを簡単にリセットできます。この記事では、Hyperf フレームワークを使用してパスワード リセット機能を実装する方法とコード例を紹介します。
1. 設計アイデア
パスワード リセット機能を設計する場合、通常は次の手順が必要です:
2. コードの実装
<?php namespace AppController; use AppServiceEmailService; use AppServiceUserService; use HyperfHttpServerAnnotationAutoController; /** * @AutoController() */ class ResetPasswordController { /** * 发送重置密码链接 */ public function sendResetLink(UserService $userService, EmailService $emailService) { $email = request()->input('email'); // 检查邮箱是否存在 if (!$userService->checkEmailExists($email)) { return ['code' => 400, 'message' => '该邮箱不存在']; } // 发送重置密码链接 $emailService->sendResetLinkEmail($email); return ['code' => 200, 'message' => '已发送重置密码链接,请查收邮箱']; } /** * 重置密码 */ public function resetPassword(UserService $userService) { $email = request()->input('email'); $token = request()->input('token'); $password = request()->input('password'); // 验证重置密码链接的合法性 if (!$userService->validateResetToken($email, $token)) { return ['code' => 400, 'message' => '重置密码链接已失效']; } // 更新用户密码 $userService->updatePassword($email, $password); return ['code' => 200, 'message' => '密码重置成功']; } }
<?php namespace AppService; class EmailService { /** * 发送重置密码链接到用户邮箱 */ public function sendResetLinkEmail($email) { // 发送邮件的逻辑 } }
<?php namespace AppService; class UserService { /** * 检查邮箱是否存在 */ public function checkEmailExists($email) { // 判断邮箱是否存在的逻辑 } /** * 验证重置密码链接的合法性 */ public function validateResetToken($email, $token) { // 验证重置密码链接的合法性逻辑 } /** * 更新用户密码 */ public function updatePassword($email, $password) { // 更新用户密码的逻辑 } }
<?php Router::post('/reset/send', 'AppControllerResetPasswordController@sendResetLink'); Router::post('/reset/reset', 'AppControllerResetPasswordController@resetPassword');
<form action="/reset/send" method="POST"> <input type="text" name="email" placeholder="请输入注册时使用的邮箱"> <button type="submit">发送重置密码链接</button> </form>
<form action="/reset/reset" method="POST"> <input type="hidden" name="email" value="{{ $email }}"> <input type="hidden" name="token" value="{{ $token }}"> <input type="password" name="password" placeholder="请输入新密码"> <input type="password" name="confirm_password" placeholder="请确认新密码"> <button type="submit">重置密码</button> </form>
以上がHyperf フレームワークを使用してパスワードをリセットする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。