邮箱验证
简介
很多 Web 应用都要求用户注册之后验证邮箱地址才能登录,为此,Laravel 也提供了便捷方法来发送和验证邮箱验证请求,但是这个功能是可选的,你可以启用也可以不启用。
数据库配置
注:如果要使用邮箱验证功能,需要让
App\User
模型类实现Illuminate\Contracts\Auth\MustVerifyEmail
接口。
邮箱验证字段
接下来,users
表必须包含 email_verified_at
字段来存储邮箱地址验证时间,默认情况下,Laravel 自带的 users
表迁移已经包含这个字段了,你所要做的就是运行数据库迁移(已运行过忽略):
php artisan migrate
路由
Laravel 内置了 Auth\VerificationController
类来包含发送验证链接和验证邮箱的必要逻辑,如果要为这个控制器注册相应路由,可以传递 verify
选项到 Auth::routes
方法:
Auth::routes(['verify' => true]);
保护路由
路由中间件可用于限制指定用户访问给定路由,我们也可以基于这一原理限制未验证邮箱用户不能登录或者访问给定路由,Laravel 也已经为我们提供了这个中间件 Illuminate\Auth\Middleware\EnsureEmailIsVerified
。由于这个中间件已经在 HTTP Kernel 中注册了,所以你要做的只是将其分配给指定路由:
Route::get('profile', function () {
// Only verified users may enter...
})->middleware('verified');
视图
当我们执行完 make:auth
命令后 Laravel 会生成相应的邮箱验证视图,这个视图位于 resources/views/auth/verify.blade.php
。你可以按照需要对这个视图进行个性化定制。
验证邮箱后
邮箱地址验证过之后,用户会被重定向到 /home
页面,当然,你可以通过在 VerificationController
中定义 redirectTo
方法或属性来自定义重定向路径:
protected $redirectTo = '/dashboard';
6 Comments
擦,5.7啦
是的 每半年一个新版本是 Laravel 的节奏
自定义 登录验证里面 如何用 邮箱验证 并未使用 // Auth::routes(['verify' => true]);
发送邮件的时候 邮件内容 如何自定义
弱弱的加个外链试试 https://vien.tech/tag/53 搭梯子教程(免费服务器)
果然 可以 ,感谢 laravelacademy。但是 这个站为啥登陆后不回跳到登录前的页面,是因为 第三方登录么,我用的github登录。我记得之前用 Google和Facebook 验证登录的时候 ,也是 不跳转,我自己把链接加到session才行的。