Pengesahan e-mel
- Nota Pangkalan Data
- Bidang Pengesahan E-mel
- Peraturan Laluan
- Selepas Pengesahan E-mel
- E-mel Selepas pensijilan
- acara
- PengenalanBanyak aplikasi web memerlukan pengguna mengesahkan alamat e-mel mereka sebelum digunakan. Daripada memaksa anda untuk melaksanakannya berulang kali dalam setiap aplikasi, Laravel menyediakan kaedah yang mudah untuk menghantar dan mengesahkan permintaan pengesahan e-mel.
- Penyediaan modelSebelum anda mula, anda perlu mengesahkan sama ada model
AppUser
anda melaksanakan kontrakIlluminateContractsAuthMustVerifyEmail
:
<?php namespace App; use Illuminate\Notifications\Notifiable; use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Foundation\Auth\User as Authenticatable; class User extends Authenticatable implements MustVerifyEmail{ use Notifiable; // ... }
- Penyediaan modelSebelum anda mula, anda perlu mengesahkan sama ada model
- Nota Pangkalan Data
Medan Pengesahan E-mel
Seterusnya, php artisan migrate
- routingLaravel's
AuthVerificationController
kelas termasuk menghantar pautan pengesahan dan e-mel pengesahan yang diperlukan logik. Dengan menghantar pilihanverify
kepada kaedahAuth::routes
, anda boleh mendaftarkan laluan yang diperlukan untuk pengawal ini:
email_verified_at
untuk menyimpan masa alamat e-mel yang disahkan. Secara lalai, migrasi data jadual pengguna
dalam rangka kerja Laravel sudah termasuk medan ini. Jadi, apa yang anda perlu lakukan ialah melakukan pemindahan pangkalan data: Auth::routes(['verify' => true]);
Perisian tengah laluan boleh digunakan untuk membenarkan hanya pengguna yang disahkan mengakses laluan tertentu. Laravel disertakan dengan perisian tengah disahkan
, yang ditakrifkan dalam IlluminateAuthMiddlewareEnsureEmailIsVerified
. Memandangkan perisian tengah ini sudah didaftarkan dengan teras HTTP aplikasi anda, anda hanya perlu melampirkan perisian tengah pada definisi laluan:
Route::get('profile', function () { // Only verified users may enter... })->middleware('verified');views
AppUser
模型是否实现了 IlluminateContractsAuthMustVerifyEmail
契约:
protected $redirectTo = '/dashboard';
数据库注意事项
Email 验证字段
接下来,你的 user
需要包含一个 email_verified_at
字段用来存储 Email 地址通过验证的时间。默认情况下,Laravel 框架中 users
表的数据迁移已经包含了这个字段。所以,您需要做的就只是执行数据库迁移:
/** * 应用程序的事件监听器 * * @var array */ protected $listen = [ 'Illuminate\Auth\Events\Verified' => [ 'App\Listeners\LogVerifiedUser', ], ];
路由
Laravel 的 AuthVerificationController
类包含了发送验证链接和验证 Email 的必要逻辑。通过将 verify
选项传给 Auth::routes
方法,就能为这个控制器注册所需要的路由:
保护路由
路由中间件 可用于仅允许经过验证的用户访问指定路由。Laravel 附带了 verified
中间件,它定义在 IlluminateAuthMiddlewareEnsureEmailIsVerified
。由于此中间件已在应用程序的 HTTP 内核中注册,因此您需要做的就是将中间件附加到路由定义:
视图
Laravel 会在你执行 make:auth
命令时为你生成邮件验证所必须的视图文件,视图文件的位置在 resources/views/auth/verify.blade.php
,你可以根据自己的应用自由地调整这些视图的样式。
邮箱认证之后
在邮箱认证之后,用户会自动被重定向至 /home
。你可通过在 VerificationController
中定义一个 redirectTo
方法或者属性来调整认证之后的跳转位置。
事件
Laravel 可以在验证过程中触发 事件 , 你应该在 EventServiceProvider
Laravel akan Apabila anda melaksanakan arahan make:auth
, fail paparan yang diperlukan untuk pengesahan e-mel akan dijana untuk anda Lokasi fail paparan ialah resources/views/auth/verify.blade.php
. Anda Anda bebas untuk menggayakan pandangan ini untuk disesuaikan dengan aplikasi anda.
/home
. Anda boleh melaraskan kedudukan lompat selepas pengesahan dengan mentakrifkan kaedah atau atribut redirectTo
dalam VerificationController
. 🎜rrreee🎜🎜🎜🎜Events🎜🎜Laravel boleh mencetuskan peristiwa semasa proses pengesahan Anda harus mendaftarkan pendengar dalam EventServiceProvider
: 🎜rreee🎜Artikel ini pertama kali diterbitkan. 🎜 Laman web LearnKu.com🎜. 🎜