Laravel 5.5 验证用户邮箱

2018-03-07  本文已影响1196人  李颖轩_LiYingxuan

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,
],

给用户表添加字段:

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.

上一篇 下一篇

猜你喜欢

热点阅读