首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
Email认证-简介
Email认证-准备模型
Email认证-准备数据库
Email认证-路由
Email认证-Email 认证通知
Email认证-Email 认证处理
Email认证-重新发送 Email 认证
Email认证-保护路由
Email认证-自定义
Email认证-事件
加密解密-简介
加密解密-配置
加密解密-基本用法
哈希-介绍
哈希-配置
哈希-基本用法
哈希-哈希密码
哈希-验证密码是否与哈希值相匹配
哈希-确定密码是否需要重新哈希
重置密码-介绍
重置密码-模型准备
重置密码-数据库准备
重置密码-配置可信主机
重置密码-路由
重置密码-请求密码重置链接
重置密码-重置密码
重置密码-删除过期令牌
重置密码-自定义
数据库-简介
数据库-配置
数据库-读写分离
数据库-运行原生 SQL 查询
数据库-使用多个数据库连接
数据库-监听查询事件
数据库-监控累计查询时间
数据库-数据库事务
数据库-连接到数据库 CLI
数据库-检查数据库
数据库-监控数据库
当前位置:
首页>>
技术小册>>
Laravel(10.x)从入门到精通(十五)
小册名称:Laravel(10.x)从入门到精通(十五)
### Email认证 - 准备模型 在Laravel框架中,实现用户认证是构建现代Web应用不可或缺的一部分。Email认证作为用户验证的主要手段,确保了系统的安全性和用户数据的准确性。本章节将深入讲解如何在Laravel 10.x中准备用于Email认证的模型,包括用户模型的创建、迁移文件的设置、以及模型与Laravel内置认证系统的集成。 #### 一、引言 Laravel通过其强大的认证系统Laravel Breeze或Laravel Fortify(视版本而定),为开发者提供了快速搭建用户认证功能的框架。然而,在利用这些工具之前,我们首先需要准备一个适合Email认证的用户模型。用户模型(通常命名为`User`)将作为所有认证逻辑的基础,存储用户的个人信息如用户名、邮箱地址、密码哈希等。 #### 二、创建用户模型 在Laravel中,用户模型默认位于`App\Models`目录下,通常命名为`User.php`。如果尚未存在,你可以通过Artisan命令来生成它(虽然对于大多数Laravel项目来说,这是默认创建的): ```bash php artisan make:model User -m ``` 这里的`-m`选项告诉Artisan同时生成一个数据库迁移文件(通常命名为`create_users_table.php`),用于定义`users`表的结构。 #### 三、定义用户迁移文件 打开生成的迁移文件(位于`database/migrations`目录),你会看到Laravel为`users`表预设了一些字段。对于Email认证,至少需要确保以下几个字段存在: - `id`(主键,通常使用自增ID) - `name`(用户的名字) - `email`(用户的电子邮件地址,唯一) - `email_verified_at`(邮箱验证时间戳,可为空) - `password`(用户密码的哈希值) - `remember_token`(记住我功能的令牌,可为空) - `created_at`和`updated_at`(时间戳,自动管理) 示例迁移文件内容可能如下: ```php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateUsersTable extends Migration { /** * Run the migrations. * * @return void */ 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->rememberToken(); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('users'); } } ``` #### 四、配置用户模型 接下来,需要确保`User`模型正确配置了用于认证的必要特质(Traits)和属性。Laravel的认证系统依赖于`Illuminate\Foundation\Auth\User`接口或`Authenticatable`特质来实现认证逻辑。 通常,Laravel的`User`模型已经包含了`Authenticatable`特质,如下所示: ```php namespace App\Models; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Database\Eloquent\Factories\HasFactory; class User extends Authenticatable implements MustVerifyEmail { use HasFactory, Notifiable; /** * The attributes that are mass assignable. * * @var array */ protected $fillable = [ 'name', 'email', 'password', ]; /** * The attributes that should be hidden for arrays. * * @var array */ protected $hidden = [ 'password', 'remember_token', ]; /** * The attributes that should be cast to native types. * * @var array */ protected $casts = [ 'email_verified_at' => 'datetime', ]; } ``` 注意,这里`User`模型还实现了`MustVerifyEmail`接口,这是Laravel用于处理邮箱验证逻辑的接口。实现该接口后,Laravel会在用户注册后自动要求用户验证其邮箱地址。 #### 五、自定义认证行为 虽然Laravel的认证系统提供了强大的开箱即用功能,但在某些情况下,你可能需要自定义认证行为。例如,你可能想在用户尝试登录时执行额外的验证步骤,或者在用户注册后自动执行某些操作。 Laravel允许你通过几种方式来自定义认证行为,包括但不限于: - **监听器(Listeners)**:使用Laravel的事件系统来监听用户注册、登录等事件,并在这些事件发生时执行自定义逻辑。 - **认证守卫(Guards)**和**提供者(Providers)**:通过配置`config/auth.php`文件,你可以自定义认证守卫和提供者,以支持不同的认证机制和用户数据源。 - **中间件(Middleware)**:创建自定义中间件来在用户请求的不同阶段插入自定义逻辑。 #### 六、集成Laravel Breeze或Fortify 从Laravel 8开始,Laravel官方推荐使用Breeze或Fortify作为认证系统的脚手架。这些工具简化了认证逻辑的搭建过程,并提供了现成的前端视图和路由。 - **Laravel Breeze**:一个轻量级的认证启动模板,包含登录、注册、邮箱验证、密码重置等页面。它使用Tailwind CSS进行样式设计,但你可以轻松替换为其他CSS框架。 - **Laravel Fortify**:一个功能更全面的认证系统,基于Laravel Breeze但提供了更多的定制选项和特性,如两因素认证、速率限制等。 根据你的项目需求,你可以选择使用其中一个工具来快速搭建Email认证系统。安装和配置过程通常涉及几个简单的Artisan命令和配置文件的修改。 #### 七、总结 在Laravel 10.x中准备用于Email认证的用户模型是一个涉及多个步骤的过程,包括创建用户模型、定义迁移文件、配置用户模型以及(可选地)集成Laravel Breeze或Fortify。通过遵循上述步骤,你可以确保你的用户认证系统既安全又易于维护。记住,Laravel的认证系统是非常灵活的,你可以根据自己的需求进行定制和扩展。
上一篇:
Email认证-简介
下一篇:
Email认证-准备数据库
该分类下的相关小册推荐:
PHP8入门与项目实战(2)
Yii2框架从入门到精通(上)
PHP8入门与项目实战(4)
PHP程序员面试笔试真题与解析
Magento零基础到架构师(目录管理)
PHP高性能框架-Swoole
Laravel(10.x)从入门到精通(十)
ThinkPHP项目开发实战
PHP合辑3-数组函数
PHP合辑4-字符串函数
PHP8入门与项目实战(7)
全面掌握Magento2-从配置到优化