Laravel 8 이메일 확인을 구현하는 방법은 무엇입니까?

원래 게시된 @https://codeanddeploy.com 방문하여 샘플 코드 다운로드: https://codeanddeploy.com/blog/laravel/how-to-implement-laravel-8-email-verification

이 게시물에서는 Laravel 8 프로젝트에 이메일 확인을 구현하는 방법을 보여드리겠습니다. 이미 인증을 받았기 때문에 활성 상태인 경우 제공된 이메일을 확인해야 합니다.

Laravel 프로젝트를 쉽게 따라하고 구현할 수 있도록 단계별로 알려드리겠습니다.



이메일 주소 확인을 클릭하면 계정이 확인됩니다.



대시보드로 이동 버튼을 클릭하면 계정이 아직 확인되지 않은 경우 아래 샘플 스크린샷으로 리디렉션됩니다.



따라서 이 기능을 사용하기 위해 튜토리얼을 계속 진행할 것입니다.

Laravel 8 프로젝트가 설치되어 있고 이미 인증이 있다고 가정했습니다. 그렇지 않은 경우 여기tutorial를 방문하십시오.

1단계: 명령에 따라 composer 실행




composer require laravel/ui


2단계: 확인 경로 추가



route/web.php에 다음 경로를 추가합니다.

Route::group(['middleware' => ['auth']], function() {
    .
    .
    .
    /**
    * Verification Routes
    */
    Route::get('/email/verify', 'VerificationController@show')->name('verification.notice');
    Route::get('/email/verify/{id}/{hash}', 'VerificationController@verify')->name('verification.verify')->middleware(['signed']);
    Route::post('/email/resend', 'VerificationController@resend')->name('verification.resend');
    .
    .
    .
});


3단계: 확인 컨트롤러 추가


VerificationController를 만들고 아래 명령을 실행해 보겠습니다.

php artisan make:controller VerificationController


그런 다음 아래 코드를 복사하여 붙여넣으십시오.

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Foundation\Auth\RedirectsUsers;
use Illuminate\Foundation\Auth\VerifiesEmails;

class VerificationController extends Controller
{
    /*
    |--------------------------------------------------------------------------
    | Email Verification Controller
    |--------------------------------------------------------------------------
    |
    | This controller is responsible for handling email verification for any
    | user that recently registered with the application. Emails may also
    | be re-sent if the user didn't receive the original email message.
    |
    */

    use VerifiesEmails, RedirectsUsers;

    /**
     * Where to redirect users after verification.
     *
     * @var string
     */
    protected $redirectTo = '/';

    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('auth');
        $this->middleware('signed')->only('verify');
        $this->middleware('throttle:6,1')->only('verify', 'resend');
    }

    /**
     * Show the email verification notice.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\RedirectResponse|\Illuminate\View\View
     */
    public function show(Request $request)
    {
        return $request->user()->hasVerifiedEmail()
                        ? redirect($this->redirectPath())
                        : view('verification.notice', [
                            'pageTitle' => __('Account Verification')
                        ]);
    }
}


4단계: 사용자 모델에 MustVerifyEmail 구현



아래의 다음 코드를 참조하십시오.

<?php

namespace App\Models;

use Laravel\Sanctum\HasApiTokens;
use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable implements MustVerifyEmail
{
    use HasApiTokens, HasFactory, Notifiable;


보시다시피 저는 User 모델에 MustVerifyEmail을 구현합니다.

5단계: 확인 보기 추가



그런 다음 리소스/뷰 디렉터리에 "verification"폴더를 추가합니다. 그리고 notice.blade.php라는 파일을 추가하고 다음 코드를 추가합니다.

@extends('layouts.app-master')

@section('content')
    <div class="bg-light p-5 rounded">
        <h1>Dashboard</h1>

        @if (session('resent'))
            <div class="alert alert-success" role="alert">
                A fresh verification link has been sent to your email address.
            </div>
        @endif

        Before proceeding, please check your email for a verification link. If you did not receive the email,
        <form action="{{ route('verification.resend') }}" method="POST" class="d-inline">
            @csrf
            <button type="submit" class="d-inline btn btn-link p-0">
                click here to request another
            </button>.
        </form>
    </div>
@endsection


6단계: 등록에 이벤트 추가



그런 다음 이 라인을 추가하십시오 event(new Registered($user)); 귀하의 등록 방법에. 이 예제에서는 app/Http/Controllers/RegisterController.php 내부에서 볼 수 있습니다.

아래 코드를 참조하십시오.

/**
* Handle account registration request
* 
* @param RegisterRequest $request
* 
* @return \Illuminate\Http\Response
*/
public function register(RegisterRequest $request) 
{
   $user = User::create($request->validated());

   event(new Registered($user));

   auth()->login($user);

   return redirect('/')->with('success', "Account successfully registered.");
}


에스

7단계: 이벤트 및 리스너 등록



Laravel 8 설치 시 아래 코드가 이미 추가되어 있지만 문제가 발생하지 않도록 $listen 속성에 추가되었는지 다시 확인해야 합니다.

파일 이름: App\Providers\EventServiceProvider.php

/**
* The event listener mappings for the application.
*
* @var array
*/
protected $listen = [
    Registered::class => [
        SendEmailVerificationNotification::class,
    ],
];


8단계: mailtrap에 등록



그런 다음 mailtrap에 등록하여 테스트 이메일을 보내십시오. 그리고 Demo Inbox 내에서 자격 증명을 얻으십시오.



그런 다음 . env 파일.

9단계: 대시보드 컨트롤러 만들기



이제 DashboardController를 생성하고 나중에 검증된 미들웨어로 보호할 것입니다. 아래 명령을 실행합니다.

php artisan make:controller DashboardController


그런 다음 아래 코드를 복사하여 붙여넣습니다.

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class DashboardController extends Controller
{
    public function index() 
    {
        return view('dashboard.index');
    }
}


10단계: 대시보드용 경로 추가



다음으로 대시보드에 대한 경로를 생성하고 확인된 계정만 액세스할 수 있는 Laravel의 기본 미들웨어인 확인된 미들웨어로 보호해야 합니다.

//only authenticated can access this group
Route::group(['middleware' => ['auth']], function() {
    //only verified account can access with this group
    Route::group(['middleware' => ['verified']], function() {
            /**
             * Dashboard Routes
             */
            Route::get('/dashboard', 'DashboardController@index')->name('dashboard.index');
    });
});


11단계: 대시보드 보기 만들기
resources/views 디렉토리로 이동한 다음 "dashboard"폴더를 만들고 블레이드 파일 "index.blade.php "을 만들고 아래 코드를 복사하여 붙여넣습니다.

@extends('layouts.app-master')

@section('content')
    <div class="bg-light p-5 rounded">
        <h1>Dashboard</h1>
        <p class="lead">Only authenticated users can access this page.</p>
    </div>
@endsection


클릭할 수 있고 대시보드로 리디렉션되도록 홈 페이지에 "대시보드로 이동"버튼을 추가해 보겠습니다.

authentication에 대한 이전 자습서를 따랐다면 리소스 안에 홈 폴더가 있습니다. 그런 다음 index.blade.php 파일이 있습니다. 아래 코드로 업데이트하겠습니다.

@extends('layouts.app-master')

@section('content')
    <div class="bg-light p-5 rounded">
        @auth
        <h1>Home page</h1>
        <p class="lead">Only authenticated users can access this section.</p>
        <a href="{{ route('dashboard.index') }}" class="btn btn-lg btn-warning me-2">Goto Dashboard</a>
        <a class="btn btn-lg btn-primary" href="https://codeanddeploy.com" role="button">View more tutorials here &raquo;</a>
        @endauth

        @guest
        <h1>Homepage</h1>
        <p class="lead">Your viewing the home page. Please login to view the restricted data.</p>
        @endguest
    </div>
@endsection


그게 다야. 이 튜토리얼이 도움이 되었으면 합니다. 이 코드를 다운로드하려면 여기https://codeanddeploy.com/blog/laravel/how-to-implement-laravel-8-email-verification를 방문하십시오.

행복한 코딩 :)

좋은 웹페이지 즐겨찾기