如何在登录laravel 5.2时检查电子邮件(确认/或未确认)


How to check email (confirmed/or no) at login in laravel 5.2?

我使用标准的Laravel身份验证。

php artisan make:auth

但是我需要检查用户邮件的状态(确认/未确认)。如果未确认,则登录页面将显示错误。

Laravel 5.2

谢谢!

users表中创建一个列is_verified和另一个列verification_hash。In AuthController.php

    protected function create(array $data)
    {
    return User::create([
        'name' => $data['name'],
        'username' => $data['username'],
        'email' => $data['email'],
        'password' => bcrypt($data['password']),
        'verification_hash' => md5($data['name'] . Carbon::now()->timestamp),
        'is_verified' => 0,
    ]);
   }

重写register方法向他发送带有验证链接的邮件

public function register(Request $request)
{
    $validator = $this->validator($request->all());
    if ($validator->fails()) {
        $this->throwValidationException(
            $request, $validator
        );
    }
    $user = $this->create($request->all());
    Auth::guard($this->getGuard())->login($user);
    // Send verification email
    // use $user->verification_hash to generate link
    return redirect($this->redirectPath());
}

现在这个验证链接应该如下所示,因为它包含一个特定于该用户的哈希值

http://your_domain.com/auth/verify/6d533b7664483d3cadd13c23477e4f12

在此link方法中,将该用户的is_verified更改为1。

现在像这样修改你的validator方法

protected function validator(array $data)
{
    return Validator::make($data, [
        'name' => 'required|max:255',
        'username' => 'required|max:255|unique:users',
        'email' => 'required|email|max:255|unique:users',
        'password' => 'required|min:6|confirmed',
        'is_verified'=>'in:1'
    ]);
}

这将只允许那些is_verified值为1的用户登录。

希望这对你有帮助。