Laravel 8 이메일 확인을 구현하는 방법은 무엇입니까?
25326 단어 howphpauthenticationlaravel
이 게시물에서는 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 »</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를 방문하십시오.
행복한 코딩 :)
Reference
이 문제에 관하여(Laravel 8 이메일 확인을 구현하는 방법은 무엇입니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/codeanddeploy/how-to-implement-laravel-8-email-verification-492h텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)