Laravel 实现注册新用户时邮箱验证
实现注册时邮箱验证的方法有很多…
如果项目使用了 laravel 内置的 Auth 相关的控制器登录和注册,官方文档有更简单的方法…
本文手动实现发送邮件以及验证的功能…
前期准备
安装需要的组件
// 新建一个 Larave 项目
composer create-project laravel/laravel ./email_test
// 安装 Laravel ui 和 vue
composer require laravel/ui
php artisan ui vue --auth
// 安装相关依赖,编译 vue
npm install && npm run dev
// 数据库迁移
php artisan migrate
配置数据库
配置邮箱
方法一:使用 MailTrap
方法二:使用谷歌邮箱
.env
文件中修改相关信息
MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com // 如果用 gmail 就改为 smtp.gmail.com
MAIL_PORT=465 // 下面的 ENCRYPTION 如果是 ssl,则为 465
MAIL_USERNAME=your-email@gmail.com // 修改为自己的邮箱地址
MAIL_PASSWOR=****** // 填写邮箱的授权码
MAIL_ENCRYPTION=ssl // 加密类型,可为不填或 ssl 或 tls,如果上面的 MAILER 选择 smtp,ENCRYPTION 填 ssl
MAIL_FROM_ADDRESS=your-email@gmail.com // 修改为自己的邮箱地址
MAIL_FROM_NAME=test // 发送邮件时显示的名字
谷歌邮箱授权码获取方式见 Gmail 官网文档
1. 数据库迁移文件添加字段
databse/migrations/2014_10_12_000000_create_users_table
中添加
$table->string('verification_code')->nullable();
$table->integer('is_verified')->default(0);
添加后如下
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->string('verification_code')->nullable();
$table->integer('is_verified')->default(0);
$table->rememberToken();
$table->