ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# Email 认证 许多 web 应用要求用户在使用之前进行 Email 地址验证。Laravel 不强迫你在每个应用中重新实现它,Laravel提供了方便的方法来发送和验证电子邮件验证请求。 ### Model 预备 开始之前, 验证你的`App\User`模型是否实现了`Illuminate\Contracts\Auth\MustVerifyEmail`契约。 此外,你应该使用`Illuminate\Auth\MustVerifyEmail`trait: ~~~php <?php namespace App; use Illuminate\Auth\MustVerifyEmail; use Illuminate\Notifications\Notifiable; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Contracts\Auth\MustVerifyEmail as MustVerifyEmailContract; class User extends Authenticatable implements MustVerifyEmailContract { use MustVerifyEmail, Notifiable; // ... } ~~~ ## 数据库注意事项 #### Email 验证字段 接下来, 你的`user`需要包含一个`email_verified_at`字段用来存储 Email 地址通过验证的时间。默认的,Laravel框架中`users`表的数据迁移内已经包含了这个字段。所以,您需要做的就是执行数据库迁移: ~~~php php artisan migrate ~~~ ## 路由 Laravel 的`Auth\VerificationController`类包含了发送验证链接和验证 Email 的所需逻辑。 要为这个控制器注册所需的路由 , 传递`verify`项给`Auth::routes`方法即可 : ~~~php Auth::routes(['verify' => true]); ~~~ ### 保护路由 [路由中间件](https://laravel-china.org/docs/laravel/5.7/middleware)可用于仅允许经过验证的用户访问给定路由。Laravel 附带了`verified`中间件,它定义在`Illuminate\Auth\Middleware\EnsureEmailIsVerified`。由于此中间件已在应用程序的HTTP内核中注册,因此您需要做的就是将中间件附加到路由定义: ~~~php Route::get('profile', function () { // 只有验证过的用户可以进入 })->middleware('verified'); ~~~ ## 视图 当执行`make:auth`命令时,Laravel将生成邮箱验证需要的所有视图。 视图位于`resources/views/auth/verify.blade.php`。您可以根据应用需要自定义此视图。 ## 邮箱验证之后 在 Email 地址通过验证之后,用户将被重定向到`/home`。你可以通过在`VerificationController`中定义`redirectTo`方法或属性来自定义重定向地址: ~~~php protected $redirectTo = '/dashboard'; ~~~