최신 Laravel5.7의 편리한 기능 "정확한 전자 메일 주소만 등록하는 기능: 전자 메일 인증"
Laravel 5.7에 추가된 Email Verification은 무엇입니까?
등록(Register) 시 등록된 메일 주소에 "자동으로 URL을 입력하고 메일을 보냅니다", 수신된 메일 주소에서 "기재된 URL을 클릭합니다", 등록 완료, 요즘 흔하네요!
인증 화면은 아주 간단하게 만들었는데, 이것은 적당한 메일주소 아닌가요???의 이메일 주소를 확인하지 못했습니다. 정말 큰 도움이 되었습니다!!!
(Laravel5.7 사양 참조https://laravel.com/docs/5.7/verification)
사용 환경
Apache2
Laravel 5.7
PHP 버전 PHP7.1.20
Cloud9
전제 조건
commandphp artisan make:auth
위의 명령을 통해 Auth: 인증 화면 만들기
동작의 기본 설정이 완료되었습니다.
1. 라우팅 변경
Routes\web.php
//変更前
//Auth::routes();
//Route::get('/home', 'HomeController@index')->name('home');
//変更後
Auth::routes(['verify' => true]);
Route::get('/home', 'HomeController@index')->name('home')->middleware("verified");
POINT
「 ->middleware("verified"); 」문서 레지스트리에 항목을 추가합니다.
※ 메일 주소를 확인할 수 없는 주소는'메일 확인'을 재촉하는 화면이 계속 표시됩니다.
2. App\user.php 변경
코드의 댓글에 추가, 변경이 적혀 있습니다.
App\user.phpnamespace App;
use Illuminate\Auth\MustVerifyEmail; //追加1
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Contracts\Auth\MustVerifyEmail as MustVerifyEmailContract;
// class User extends Authenticatable { の箇所を以下に変更2
class User extends Authenticatable implements MustVerifyEmailContract { //変更2
use MustVerifyEmail, Notifiable; //MustVerifyEmailを追加
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'password',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
}
3. 메일 발송 환경 준비
왜냐하면 메일 발송과 수신 확인이 필요하거든요.
MAILTRAP.IO를 사용합니다.
mailtrap.io는 SMTP를 사용하여 메시지를 보내는 가상 서버입니다.
자세한 내용은 청구 페이지의 ".ENV"장에서 설명합니다. 아래 URL을 참조하십시오.
https://laravel10.wordpress.com/2015/02/22/%E3%83%A1%E3%83%BC%E3%83%AB%E3%81%AE%E7%92%B0%E5%A2%83%E8%A8%AD%E5%AE%9A/
4. 서명(Register)을 하면 다음 화면이 표시됩니다.
등록 확인 이메일이 화면에 표시됩니다.
mailtrap.나는 io가 메일을 받았다고 생각한다. 확인해 보자.
5. 다음 메일은 "mailtrap.io" 로 발송됩니다.
1. 화면 왼쪽에 메일을 저장합니다.
2. 화면 오른쪽에 메일 내용이 표시됩니다."파란색 단추"를 누르면 메일의 승인을 진행합니다.
6. Laravel 인증 화면이 표시됩니다.
환경/홈을 실험적으로 만들었기 때문에 로그인 후 화면이 되는 것을 양해해 주십시오.
메일 인증
메일 인증 없음(메일 확인 재촉)
참고 1: Email 인증 후 대상 재지정 변경
/app/Http/Controllers/Auth/VerificationController.php
/**
* Where to redirect users after verification.
*
* @var string
*/
protected $redirectTo = '/home'; //表示したいリダイレクト先に変更してください
참고 2: 화면의 일본어화
/resources/views/auth/verify.blade.php@extends('layouts.app')
@section('content')
<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">登録したメールを確認してください。</div>
<div class="card-body">
@if (session('resent'))
<div class="alert alert-success" role="alert">
新しい確認リンクがメールアドレスに送信されました。
</div>
@endif
続行する前に、電子メールで確認リンクを確認してください。メールが届かない場合は、 <a href="{{ route('verification.resend') }}">ここをクリックして別のメールをリクエストしてください</a>。
</div>
</div>
</div>
</div>
</div>
@endsection
감상
이외에 고전했지만 동작을 해보니 간단했다.
Auth의 인증 기능이 Email 주소를 확인하지 않았기 때문에 앞으로 Email Verification을 사용할 수 있습니다.당장 제 제품에 활용하고 싶어요.
Reference
이 문제에 관하여(최신 Laravel5.7의 편리한 기능 "정확한 전자 메일 주소만 등록하는 기능: 전자 메일 인증"), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/daisu_yamazaki/items/d5962ec2143adbbbc2bd
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
php artisan make:auth
//変更前
//Auth::routes();
//Route::get('/home', 'HomeController@index')->name('home');
//変更後
Auth::routes(['verify' => true]);
Route::get('/home', 'HomeController@index')->name('home')->middleware("verified");
namespace App;
use Illuminate\Auth\MustVerifyEmail; //追加1
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Contracts\Auth\MustVerifyEmail as MustVerifyEmailContract;
// class User extends Authenticatable { の箇所を以下に変更2
class User extends Authenticatable implements MustVerifyEmailContract { //変更2
use MustVerifyEmail, Notifiable; //MustVerifyEmailを追加
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'password',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
}
/**
* Where to redirect users after verification.
*
* @var string
*/
protected $redirectTo = '/home'; //表示したいリダイレクト先に変更してください
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">登録したメールを確認してください。</div>
<div class="card-body">
@if (session('resent'))
<div class="alert alert-success" role="alert">
新しい確認リンクがメールアドレスに送信されました。
</div>
@endif
続行する前に、電子メールで確認リンクを確認してください。メールが届かない場合は、 <a href="{{ route('verification.resend') }}">ここをクリックして別のメールをリクエストしてください</a>。
</div>
</div>
</div>
</div>
</div>
@endsection
Reference
이 문제에 관하여(최신 Laravel5.7의 편리한 기능 "정확한 전자 메일 주소만 등록하는 기능: 전자 메일 인증"), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/daisu_yamazaki/items/d5962ec2143adbbbc2bd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)