美文网首页
Laravel 5.5 验证用户邮箱

Laravel 5.5 验证用户邮箱

作者: 李颖轩_LiYingxuan | 来源:发表于2018-03-07 18:11 被阅读1196次

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.

相关文章

  • Laravel 5.5 验证用户邮箱

    1. 安装 2. 配置 修改 config/app 文件,在 providers 数组内追加如下内容: 修改 co...

  • laravel邮箱认证

    继上文laravel用户认证,本篇将实现新用户需要邮箱验证才能注册成功 邮箱认证流程 分为两步: 发送认证邮件 —...

  • Laravel5.5 新项目创建步骤

    原链接 安装laravel5.5使用composer安装laravel5.5 安装laravel/passport...

  • laravel项目简介

    登录 *双向验证数据*ajax提交表单(CSRF攻击) 注册 *手机号邮箱验证*发送短信接口平台*laravel如...

  • 深入了解 Laravel 5.5 Package Auto Di

    深入了解 Laravel 5.5 Package Auto Discovery Laravel 5.5 发布在即,...

  • laravel 项目实现邮箱验证功能

    邮箱验证功能在很多网站都有用到,我的个人网站上也用到,邮箱验证需要用到邮件发送服务,Laravel 提供了非常简单...

  • Auth关于用户相关操作

    用户验证 可以使用controller类的validate方法验证用户数据,例如: 用户登录 Laravel 提供...

  • Laravel-ACL 验证权限和角色

    验证角色 可以通过调用 is 方法验证角色。 基于用户的验证。 Laravel 5.3 使用 hasRole() ...

  • 用户邮箱验证实现思路

    用户邮箱验证实现思路 最近在做个网站的后台,使用了JWT 实现了用户验证,并在这个基础上实现用户邮箱验证。对于 J...

  • 阅读

    阅读 Laravel 5.5 官方文档; Laravel 5.5 API 文档; PSR 通过的标准; PHP 最...

网友评论

      本文标题:Laravel 5.5 验证用户邮箱

      本文链接:https://www.haomeiwen.com/subject/ahhsfftx.html