Email 認證
Email 認證
Email Verification
簡介
很多 Web 應(yīng)用會要求用戶在使用之前進行 Email 地址驗證。Laravel 不會強迫你在每個應(yīng)用中重復實現(xiàn)它,而是提供了便捷的方法來發(fā)送和校驗電子郵件的驗證請求。
Model 準備
在開始之前,需要驗證你的 App\User
模型是否實現(xiàn)了 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; // ... }
數(shù)據(jù)庫注意事項
Email 驗證字段
接下來,你的 user
需要包含一個 email_verified_at
字段用來存儲 Email 地址通過驗證的時間。默認情況下,Laravel 框架中 users
表的數(shù)據(jù)遷移已經(jīng)包含了這個字段。所以,您需要做的就只是執(zhí)行數(shù)據(jù)庫遷移:
php artisan migrate
路由
Laravel 的 Auth\VerificationController
類包含了發(fā)送驗證鏈接和驗證 Email 的必要邏輯。通過將 verify
選項傳給 Auth::routes
方法,就能為這個控制器注冊所需要的路由:
Auth::routes(['verify' => true]);
保護路由
路由中間件 可用于僅允許經(jīng)過驗證的用戶訪問指定路由。Laravel 附帶了 verified
中間件,它定義在 Illuminate\Auth\Middleware\EnsureEmailIsVerified
。由于此中間件已在應(yīng)用程序的 HTTP 內(nèi)核中注冊,因此您需要做的就是將中間件附加到路由定義:
Route::get('profile', function () { // Only verified users may enter... })->middleware('verified');
視圖
Laravel 會在你執(zhí)行 make:auth
命令時為你生成郵件驗證所必須的視圖文件,視圖文件的位置在 resources/views/auth/verify.blade.php
,你可以根據(jù)自己的應(yīng)用自由地調(diào)整這些視圖的樣式。
郵箱認證之后
在郵箱認證之后,用戶會自動被重定向至 /home
。你可通過在 VerificationController
中定義一個 redirectTo
方法或者屬性來調(diào)整認證之后的跳轉(zhuǎn)位置。
protected $redirectTo = '/dashboard';
事件
Laravel 可以在驗證過程中觸發(fā) 事件 , 你應(yīng)該在 EventServiceProvider
中注冊監(jiān)聽者:
/** * 應(yīng)用程序的事件監(jiān)聽器 * * @var array */ protected $listen = [ 'Illuminate\Auth\Events\Verified' => [ 'App\Listeners\LogVerifiedUser', ], ];