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

时间:2016-11-10 00:46:07

标签: php laravel authentication laravel-5.2 middleware

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

php artisan make:auth

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

Laravel 5.2

谢谢!

1 个答案:

答案 0 :(得分:0)

is_verified表中创建一列verification_hash和另一列users。在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

在此链接方法上,将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的用户登录。

希望这会有所帮助。

相关问题