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

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

Apr 21, 2023 am 10:05 AM

최신 웹 애플리케이션에서 사용자 비밀번호 재설정은 필수 기능입니다. 잘 설계된 비밀번호 재설정 프로세스는 사용자 계정의 보안을 보장할 뿐만 아니라 사용자 경험도 향상시킬 수 있습니다. 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으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Laravel에서 OAUTH2 인증 및 승인을 구현하는 방법은 무엇입니까? Laravel에서 OAUTH2 인증 및 승인을 구현하는 방법은 무엇입니까? Mar 12, 2025 pm 05:56 PM

이 기사는 Laravel에서 OAUTH 2.0 인증 및 승인을 구현하는 자세한 내용입니다. 리그/OAUTH2-SERVER 또는 제공자 별 솔루션과 같은 패키지를 사용하여 데이터베이스 설정 강조, 클라이언트 등록, 인증 서버 Configu

Laravel의 구성 요소를 사용하여 재사용 가능한 UI 요소를 만드는 방법은 무엇입니까? Laravel의 구성 요소를 사용하여 재사용 가능한 UI 요소를 만드는 방법은 무엇입니까? Mar 17, 2025 pm 02:47 PM

이 기사는 구성 요소를 사용하여 Laravel에서 재사용 가능한 UI 요소를 작성하고 사용자 정의하여 조직을위한 모범 사례를 제공하고 패키지 강화를 제안합니다.

클라우드 네이티브 환경에서 Laravel을 사용하기위한 모범 사례는 무엇입니까? 클라우드 네이티브 환경에서 Laravel을 사용하기위한 모범 사례는 무엇입니까? Mar 14, 2025 pm 01:44 PM

이 기사는 클라우드 네이티브 환경에서 Laravel을 배포하기위한 모범 사례에 대해 설명하고 확장 성, 신뢰성 및 보안에 중점을 둡니다. 주요 문제로는 컨테이너화, 마이크로 서비스, 무국적 설계 및 최적화 전략이 포함됩니다.

Laravel에서 Custom Blade Directives를 어떻게 작성하고 사용합니까? Laravel에서 Custom Blade Directives를 어떻게 작성하고 사용합니까? Mar 17, 2025 pm 02:50 PM

이 기사는 Laravel에서 사용자 정의 블레이드 지시문을 만들고 사용하여 템플릿을 향상시키는 것에 대해 설명합니다. 지침 정의, 템플릿에서이를 사용하고 대규모 프로젝트에서 관리하고 개선 된 코드 재사용 성 및 R과 같은 이점을 강조합니다.

Laravel에서 사용자 정의 검증 규칙을 어떻게 작성하고 사용하려면? Laravel에서 사용자 정의 검증 규칙을 어떻게 작성하고 사용하려면? Mar 17, 2025 pm 02:38 PM

이 기사에서는 Laravel에서 사용자 정의 검증 규칙을 작성하고 사용하여이를 정의하고 구현하는 단계를 제공합니다. 재사용 성과 특이성과 같은 이점을 강조하고 Laravel의 검증 시스템을 확장하는 방법을 제공합니다.

Laravel에서 파일 업로드 및 클라우드 스토리지를 처리하는 가장 좋은 방법은 무엇입니까? Laravel에서 파일 업로드 및 클라우드 스토리지를 처리하는 가장 좋은 방법은 무엇입니까? Mar 12, 2025 pm 05:54 PM

이 기사는 Laravel의 최적 파일 업로드 및 클라우드 스토리지 전략을 살펴 봅니다. 로컬 스토리지 대 클라우드 제공 업체 (AWS S3, Google Cloud, Azure, DigitalOcean), 보안 강조 (유효성 검사, 소독, HTTP) 및 성능 OPTI를 검사합니다.

Laravel의 Artisan 콘솔을 사용하여 일반적인 작업을 자동화하려면 어떻게합니까? Laravel의 Artisan 콘솔을 사용하여 일반적인 작업을 자동화하려면 어떻게합니까? Mar 17, 2025 pm 02:39 PM

Laravel의 Artisan Console은 코드 생성, 마이그레이션 실행 및 스케줄링과 같은 작업을 자동화합니다. 주요 명령에는 Make : Controller, Migrate 및 DB : SEED가 포함됩니다. 특정 요구에 대해 사용자 정의 명령을 작성할 수 있으며 워크 플로 효율 향상.

Laravel의 라우팅 기능을 사용하여 SEO 친화적 인 URL을 만드는 방법은 무엇입니까? Laravel의 라우팅 기능을 사용하여 SEO 친화적 인 URL을 만드는 방법은 무엇입니까? Mar 17, 2025 pm 02:43 PM

이 기사는 Laravel의 라우팅을 사용하여 SEO 친화적 인 URL을 생성, 모범 사례, 표준 URL 및 SEO 최적화 도구를 다루는 것에 대해 설명합니다.

See all articles