Write the Code. Change the World.

2月 20

以前,还需要写中间件来处理邮箱是否验证过了。5.7 开始,Laravel 自带了邮箱验证的相关字段和功能。

以此基础,从零开始吧。

生成注册登录

php artisan make:auth

修改执行以下操作

修改 User 模型,使其实现 MustVerifyEmail 接口

class User extends Authenticatable implements MustVerifyEmail

启用与邮箱验证相关的路由(验证邮箱页面、重发验证邮件页面等),修改 routes/web.php

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

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

Route::get('/', 'PageController@home')->name('home')->middleware('verified');

访问首页,发现会跳转到验证邮箱的页面了。证明邮箱验证生效。

看看 users 表,我们发现和以前比,多了一个 email_verified_at 字段。

激活邮箱

我们可以临时使用 MailHog 来模拟邮箱激活。

MailHog 是 Homestead 自带的一个组件,可以很方便地调试发送邮件。直接使用端口号 8025 就可以访问到。那么,怎么让其接受到邮件呢。修改 .env 文件。将 host 和 port 修改成下边的即可。

MAIL_HOST=127.0.0.1
MAIL_PORT=1025

修改完毕,刷新 mailhog 页面。点击首页链接,会跳转到验证页面。发送验证,查看邮箱,点击激活。再访问首页是不是就可以访问了。再看看数据库,会发现 email_verified_at 字段以及有值(日期时间)了。