为了密码垃圾用户,一般在用户注册的时候都会对用户进行验证。这里我们在注册的时候填写了用户的邮箱,但在注册过程中并没有对用户邮箱的真实性进行验证,因此需要添加一个邮件验证机制。
整体思路是用户注册的时候,向用户的邮箱发送一个带有特殊验证串的链接,用户点击链接之后,用户验证通过,然后就可以正常登录的,否则用户登录的时候提示用户需要邮件进行激活。
修改用户数据表
为了实现上面的功能,需要在用户表中添加两个字段,activity_token
,activity_expire
,is_activity
分别表示激活字符串,激活验证过期时间,是否激活标记。
对于数据库的修改,可以使用Laravel创建数据迁移文件,并执行数据迁移完成。
在根目录下,执行下面的命令,创建一个对users
表的数据库迁移文件
php artisan make:migration alter_users_table --table=users
上面的命令会在database/migrations
目录下新增一个类似2019_09_08_082359_alter_users_table.php
的文件名,前面是日期加一个随机数。
修改你的数据库迁移文件,修改up
方法如下:
public function up()
{
Schema::table('users', function (Blueprint $table) {
$table->string('activity_token')->comment('激活验证token');
$table->dateTime('activity_expire')->comment('激活过期时间');
$table->tinyInteger('is_activity')->default(0)->comment('是否激活1是,0否');
});
}
执行数据库迁移命令php artisan migrate
插入用户数据添加激活token,激活过期时间
用户注册的控制器的文件为app\Http\Controller\Auth\RegisterController.php
。
所有的业务逻辑,都是通过Illuminate\Foundation\Auth\RegistersUsers
这个trait实现的。到目前为止,这个文件没有太多的内容,基本上都是Laravel本身就已经完成了大部分逻辑。
修改RegisterController
中的create
方法,添加activity_token
,email_verified_at
的赋值逻辑。
//注意需要添加 use Illuminate\Support\Facades\Date;
protected function create(array $data)
{
return User::create([
'activity_token'=>\Str::random(60),
'activity_expire'=>Date::now()->addHours(24),
'name&