在Laravel注册之前如何进行电子邮件验证?

时间:2019-12-23 04:56:45

标签: php laravel laravel-authentication

我在系统中有两种类型的用户(用户和管理员)。该用户拥有自己的表users,对于admin用户,我正在维护一个名为admin的单独表。

我研究了一下,发现Laravel为用户提供了电子邮件验证。

我只想对管理员用户(而非普通用户)实施电子邮件验证。

如何为管理员表使用Laravel的Email Verification

1 个答案:

答案 0 :(得分:0)

首先,如果需要SMTP服务器,则可以在mailtrap中注册一个免费帐户,mailtrap是一项用于登台和开发中的电子邮件测试的服务。

然后需要在.env文件中用您的凭据添加以下详细信息

 MAIL_DRIVER=smtp  
 MAIL_HOST=smtp.mailtrap.io  
 MAIL_PORT=2525  
 MAIL_USERNAME=<YOUR_MAILTRAP_USERNAME>  
 MAIL_PASSWORD=<YOUR_MAILTRAP_PASSWORD>  
 MAIL_ENCRYPTION=tls

然后,您需要在用户模型中实施MustVerifyEmail合同。打开App / User.php文件并进行如下更新:

<?php

namespace App;

use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable implements MustVerifyEmail
{
    use Notifiable;


    protected $fillable = [
        'name', 'email', 'password',
    ];


    protected $hidden = [
        'password', 'remember_token',
    ];


    protected $casts = [
        'email_verified_at' => 'datetime',
    ];
}

在web.php中添加路由。它将路由,例如电子邮件/验证和电子邮件/重新发送到我们的应用程序。

Auth::routes(['verify' => true]);

现在您可以使用Middlware实现一个功能,以在任何控制器上验证电子邮件。

 class HomeController extends Controller
{

    public function __construct()
    {
        $this->middleware('verified');
    }
}