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 网站上。
上一篇 下一篇
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
贡献者:3
讨论数量: 1
发起讨论 只看当前版本


sunxyw
汉化 Email 认证邮件
5 个点赞 | 1 个回复 | 博客 | 课程版本 5.7