Email Verification
简介
很多 Web 应用会要求用户在使用之前进行 Email 地址验证。Laravel 不会强迫你在每个应用中重复实现它,而是提供了便捷的方法来发送和校验电子邮件的验证请求。
Model 准备
在开始之前,需要验证你的 App\User 模型是否实现了 Illuminate\Contracts\Auth\MustVerifyEmail 契约:
数据库注意事项
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', ], ];

