1. 安装
composer require jrean/laravel-user-verification
2. 配置
修改 config/app 文件,在 providers 数组内追加如下内容:
'providers' => [
...
Jrean\UserVerification\UserVerificationServiceProvider::class,
],
修改 config/app 文件,在 aliases 数组内追加如下内容:
'aliases' => [
...
'UserVerification' => Jrean\UserVerification\Facades\UserVerification::class,
],
给用户表添加字段:
- verified: 用于表示用户是否已经验证过邮箱,1 表示已验证,0 表示未验证;
- verification_token: 发送给用户的 token。
3. 定义邮件内容模板
新建一个模板文件 resources/views/emails/user-verification.blade.php:
<br>Hey there,
<br>Looks like this was the right email. :)
<br>Next, please confirm your email address by clicking on the link below.
<br><a href="{{ $content['link'] }}"> {{ $content['linkName'] }}</a>
<br>And that's it! You're that much closer to your xxx account.
<br>See you there,
<br>- xxx Team
4. 增加路由
Route::get('verification/{token}', 'Auth\AuthController@getVerification');
注:我们将此路由定义到了 AuthController 的 getVerification 方法,此方法是 VerifiesUsers Trait 里的方法,他会自动处理验证逻辑。
5. 定义验证错误的内容模板
新建一个模板文件 resources/views/errors/user-verification.blade.php。
6. 加载和调用VerifiesUsers Trait
在这里以 AuthController.php 文件为例,我们重写其注册逻辑:
...代表其他的引入,这里只重点写新增部分。
...
use Jrean\UserVerification\Traits\VerifiesUsers;
use Jrean\UserVerification\Facades\UserVerification;
use Illuminate\Support\Facades\Mail;
...
class AuthController extends BaseController
{
use VerifiesUsers;
// 验证失败后的跳转地址
public $redirectIfVerificationFails = '/emails/verification-result/failure';
// 检测到用户已经验证过后的跳转地址
public $redirectIfVerified = '/emails/verification-result/success';
// 验证成功后的跳转地址
public $redirectAfterVerification = '/emails/verification-result/success';
// 这里是使用env变量控制赋值,要不要都可以,看个人用法
public function __construct() {
$this->redirectIfVerified = env('MAIL_REDIRECT_IF_VERIFIED', '/emails/verification-result/success');
$this->redirectAfterVerification = env('MAIL_REDIRECT_AFTER_VERIFICATION', '/emails/verification-result/success');
}
public function register(Request $request)
{
... // 你的生成用户逻辑,用户在数据库中写入之后执行:
// 生成用户的验证 token,并将用户的 verified 设置为 0
UserVerification::generate($user);
// 给用户发认证邮件
$params = [
'link' => url('api/v1/verification', $user->verification_token) . '?email=' . urlencode($user->email),
'linkName' => 'Click Here'
];
$to = $user->email;
$subject = 'Welcome to XXX! Confirm Your Email';
Mail::send(
'emails.user-verification',
['content' => $params],
function ($message) use ($to, $subject) {
$message->to($to)->subject($subject);
}
);
... // 你的注册失败/失败数据返回逻辑
}
}
.env文件配置部分:
MAIL_REDIRECT_IF_VERIFIED=https://你的域名/#/login
MAIL_REDIRECT_AFTER_VERIFICATION=https://你的域名/#/login
附:Laravel 5.5 自带SMTP邮件组件实现发送邮件 ← 这个是配合上面的邮件发送部分。
效果图:

The end.
网友评论