使用Laravel自带的邮箱验证相关字段和功能

1,821 阅读1分钟

从 Laravel 5.7 起,Laravel 自带了邮箱验证的相关字段和功能。

1.调整模型类

首先,调整下User 模型类,实现 MustVerifyEmail 接口

App/User.php

.
.
.
// 这里加上 MustVerifyEmail
class User extends Authenticatable implements MustVerifyEmail
.
.
.

由于 Laravel 在创建 User 类时就默认引入了 MustVerifyEmail 的命名空间,因此我们不需要再次引入

2.调整路由

接下来我们需要让 Laravel 启用与邮箱验证相关的路由(验证邮箱页面、重发验证邮件页面等),操作也很简单,只需要修改 web.php 文件:

routes/web.php

// 在之前的路由里加上一个 verify 参数
Auth::routes(['verify' => true]);

3.验证邮箱中间件

Laravel 自带了一个名为 verified 的中间件,如果一个未验证邮箱的用户尝试访问一个配置了 verified 中间件的路由,Laravel 就会提示该用户邮箱未激活。

为了测试这个的中间件,我们修改一下之前的路由:

routes/web.php

// 在之前的路由后面配上中间件
Route::get('/', 'PagesController@root')->name('root')->middleware('verified');


实际上 Laravel 是通过 users 表中的 email_verified_at 字段来判断用户是否已经验证过邮箱,对于新注册的用户这个字段默认为 null

一旦users 表中的email_verified_at有值,则表示邮箱已经验证过。