>  기사  >  PHP 프레임워크  >  Laravel에서 비밀번호 재설정 기능을 구현하는 방법

Laravel에서 비밀번호 재설정 기능을 구현하는 방법

PHPz
PHPz원래의
2023-04-21 10:05:491179검색

최신 웹 애플리케이션에서 사용자 비밀번호 재설정은 필수 기능입니다. 잘 설계된 비밀번호 재설정 프로세스는 사용자 계정의 보안을 보장할 뿐만 아니라 사용자 경험도 향상시킬 수 있습니다. Laravel은 편리한 비밀번호 재설정 시스템을 통합한 인기 있는 PHP 웹 개발 프레임워크입니다. 이 글에서는 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. 사용자가 양식을 제출합니다.
  8. 따라서 우리는 이 프로세스의 모든 단계를 구현해야 합니다.

메일 구성

먼저 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, 이메일 사용자 이름과 비밀번호를 입력해야 합니다. <code>MAIL_FROM_ADDRESS는 이메일 전송을 위한 전송 주소를 지정하는 데 사용됩니다. .env 文件,在其中添加如下配置:

'from' => [
    'address' => env('MAIL_FROM_ADDRESS', 'youremail@example.com'),
    'name' => env('MAIL_FROM_NAME', 'Your Name'),
],

这里的配置需要根据您的实际情况进行修改,MAIL_DRIVER 指定了使用的邮件服务提供商,例如 smtpmailgunsendmail 等,这里我们使用了阿里云邮件服务提供商 smtp.mxhichina.com,并且需要填写您的邮箱用户名和密码。MAIL_FROM_ADDRESS 用于指定发送邮件的发送地址。

接下来,我们需要在 config/mail.php 文件中配置邮件发送选项,例如设置发件人名称和地址:

// 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');

路由配置

现在,我们需要配置路由来处理密码重置操作。在 Laravel 中,我们可以使用自带的 Password 控制器来处理重置密码的逻辑。打开 routes/web.php 文件,添加以下路由:

<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>

这里我们在 Auth 中使用了两个控制器,分别是 ForgotPasswordControllerResetPasswordController,分别处理重置密码邮件发送和密码重置操作。

视图配置

接下来,我们需要添加视图来展示用户填写邮箱和密码的表单。我们可以使用类似以下代码片段的 Blade 模板代码实现:

<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>

在这个页面中,我们使用了一个表单来接受用户填写的邮箱地址,并且添加了一个发送按钮,点击这个按钮将会向该邮箱发送密码重置链接。

我们还需要添加另一个视图来允许用户输入新密码。类似以下代码片段可以用于实现一个这样的表单:

use Illuminate\Support\Facades\Password;

class ForgotPasswordController extends Controller
{
    use SendsPasswordResetEmails;
}

class ResetPasswordController extends Controller
{
    use ResetsPasswords;

    protected $redirectTo = '/home';

    public function showResetForm(Request $request, $token = null)
    {
        return view('auth.passwords.reset')->with(
            ['token' => $token, 'email' => $request->email]
        );
    }
}

这个表单需要用户填写新密码和确认密码,并且需要通过 $token$email 参数来验证重置链接是否合法。这些参数可以在 ResetPasswordController@showResetForm 中获取。

控制器逻辑

我们在路由中使用了两个控制器来处理密码重置操作,分别是 ForgotPasswordControllerResetPasswordController

ForgotPasswordController 提供了一个 showLinkRequestForm() 方法,用于展示用户填写邮箱地址的表单。另外一个方法 sendResetLinkEmail() 将会向用户提供的邮箱地址发送含有密码重置链接的邮件,其中使用了 Password::sendResetLink() 方法来处理重置链接的生成和发送。

ResetPasswordController 中的 showResetForm() 方法将会展示用户输入新密码的表单,如果重置链接不合法则会返回到邮件链接过期的提示页面。reset() 方法则处理了用户填写重置密码表单并提交的逻辑,其中使用了 Password::reset()

다음으로 config/mail.php 파일에서 발신자 이름 및 주소 설정과 같은 이메일 전송 옵션을 구성해야 합니다.

rrreee라우팅 구성

이제 필요합니다. 비밀번호 재설정 작업을 처리하도록 경로를 구성합니다. Laravel에서는 내장된 Password 컨트롤러를 사용하여 비밀번호 재설정 로직을 처리할 수 있습니다. routes/web.php 파일을 열고 다음 경로를 추가하세요:
    rrreee
  1. 여기서는 Auth에서 두 개의 컨트롤러, 즉 ForgotPasswordController 및 ResetPasswordController는 비밀번호 재설정 이메일 전송 및 비밀번호 재설정 작업을 각각 처리합니다.
  2. 보기 구성
  3. 다음으로 사용자가 이메일과 비밀번호를 입력할 수 있는 양식을 표시하는 보기를 추가해야 합니다. 이를 달성하기 위해 다음 코드 조각과 유사한 블레이드 템플릿 코드를 사용할 수 있습니다.
  4. rrreee
  5. 이 페이지에서는 양식을 사용하여 사용자가 입력한 이메일 주소를 수락하고 보내기 버튼을 클릭하면 메시지가 전송됩니다. 이메일 주소로 메시지를 보내주세요.
사용자가 새 비밀번호를 입력할 수 있도록 또 다른 보기도 추가해야 합니다. 다음과 유사한 코드 조각을 사용하여 이러한 양식을 구현할 수 있습니다.

rrreee

이 양식을 사용하려면 사용자가 새 비밀번호를 입력하고 비밀번호를 확인해야 하며 $token$email 매개변수를 사용하여 재설정 링크가 합법적인지 확인합니다. 이러한 매개변수는 ResetPasswordController@showResetForm에서 얻을 수 있습니다.

컨트롤러 로직

🎜🎜우리는 비밀번호 재설정 작업을 처리하기 위해 라우팅에 두 개의 컨트롤러, 즉 ForgotPasswordControllerResetPasswordController를 사용합니다. 🎜🎜ForgotPasswordController는 사용자가 이메일 주소를 입력할 수 있는 양식을 표시하는 showLinkRequestForm() 메서드를 제공합니다. 또 다른 메소드인 sendResetLinkEmail()은 사용자가 제공한 이메일 주소로 비밀번호 재설정 링크가 포함된 이메일을 보냅니다. Password::sendResetLink() 메소드는 다음을 처리하는 데 사용됩니다. 링크 재설정 링크 생성 및 전송을 구성합니다. 🎜🎜ResetPasswordControllershowResetForm() 메소드는 사용자가 새 비밀번호를 입력하는 양식을 표시합니다. 재설정 링크가 불법인 경우 이메일 링크로 돌아갑니다. 만료 프롬프트 페이지. reset() 메소드는 사용자가 비밀번호 재설정 양식을 작성하고 제출하는 로직을 처리합니다. Password::reset() 메소드는 사용자의 비밀번호를 업데이트하는 데 사용됩니다. 데이터베이스 중간에. 🎜rrreee🎜🎜비밀번호 재설정 기능 사용🎜🎜🎜이제 Laravel에서 비밀번호 재설정 기능 구현이 완료되었으므로 구현된 기능을 사용하여 비밀번호를 재설정해 보겠습니다. 🎜🎜🎜애플리케이션의 로그인 페이지를 엽니다. 🎜🎜 등록된 이메일을 입력하고 비밀번호 재설정 링크 보내기 버튼을 클릭하세요. 🎜🎜 이메일을 열고 비밀번호 재설정 링크를 찾아 클릭하세요. 🎜🎜 새 비밀번호를 입력하고 새 비밀번호를 확인하세요. 제출 버튼. 🎜🎜🎜모든 일이 순조롭게 진행된다면 비밀번호가 성공적으로 재설정된 것입니다! 🎜🎜🎜요약🎜🎜

이 글에서는 Laravel을 사용하여 기본 비밀번호 재설정 기능을 구현하는 방법을 소개합니다. 최신 웹 애플리케이션에서 비밀번호 재설정은 필수 기능입니다. 잘 설계되고 구현된 비밀번호 재설정 프로세스만이 사용자 계정과 사용자 경험의 보안을 보장할 수 있습니다. 이 문서에 설명된 기술을 배우고 완전한 비밀번호 재설정 기능을 구현하면 사용자의 비밀번호 보안과 사용자 경험이 향상될 것이라고 믿습니다.

위 내용은 Laravel에서 비밀번호 재설정 기능을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.