Email 認證


############################

Email Verification

事件

#簡介

很多Web 應用程式會要求使用者在使用之前進行Email 位址驗證。 Laravel 不會強迫你在每個應用程式中重複實作它,而是提供了便捷的方法來發送和校驗電子郵件的驗證請求。

Model 準備在開始之前,需要驗證你的App\User 模型是否實作了Illuminate\Contracts\Auth\MustVerifyEmail 契約:

<?php 
    namespace App;
    use Illuminate\Notifications\Notifiable;
    use Illuminate\Contracts\Auth\MustVerifyEmail;
    use Illuminate\Foundation\Auth\User as Authenticatable;
    class User extends Authenticatable implements MustVerifyEmail{ 
       use Notifiable;
       // ...
  }

資料庫注意事項

Email 驗證欄位接下來,你的user 需要包含一個

email_verified_at

欄位用來儲存Email 位址通過驗證的時間。預設情況下,Laravel 框架中 users 表的資料遷移已經包含了這個欄位。所以,您需要做的就只是執行資料庫遷移:

php artisan migrate

#路由Laravel 的

Auth\VerificationController

類包含了發送驗證連結和驗證Email 的必要邏輯。透過將verify 選項傳遞給

Auth::routes

方法,就能為這個控制器註冊所需的路由:

Auth::routes(['verify' => true]);

保護路由路由中間件可用於僅允許經過驗證的使用者存取指定路由。 Laravel 附帶了

verified

中介軟體,它定義在 Illuminate\Auth\Middleware\EnsureEmailIsVerified。由於此中間件已在應用程式的HTTP 核心中註冊,因此您需要做的就是將中間件附加到路由定義:

Route::get('profile', function () { 
   // Only verified users may enter...
 })->middleware('verified');

檢視

Laravel 會在你執行 make:auth 指令時為你產生郵件驗證所必須的視圖文件,視圖文件的位置在 
resources/views/auth/verify.blade.php ###,你可以根據自己的應用程式自由地調整這些視圖的樣式。 ##################信箱認證之後######在信箱認證之後,使用者會自動被重新導向至 ###/home###。你可以在 ###VerificationController### 中定義一個 ###redirectTo### 方法或屬性來調整認證之後的跳轉位置。 ###
protected $redirectTo = '/dashboard';
###############事件######Laravel 可以在驗證過程中觸發事件, 你應該在###EventServiceProvider### 中註冊監聽者: ###
/**
 * 应用程序的事件监听器
 *
 * @var array
 */
 protected $listen = [
     'Illuminate\Auth\Events\Verified' => [   
          'App\Listeners\LogVerifiedUser',   
        ],
  ];
###本篇首發在###LearnKu.com### 網站上。 ###