简体   繁体   English

Laravel 5.8:如何在登录前更改注册用户以验证电子邮件

[英]Laravel 5.8 : How to change registered user to verify email before they can login

I use php artisan make:auth and laravel MustVerify to make member system work.我使用 php artisan make:auth 和 laravel MustVerify 使会员系统正常工作。

I want to change laravel register email verify system from我想将 Laravel 注册电子邮件验证系统从

"Register ->Login -> Verify email" to "Register -> Verify email -> Login" “注册->登录->验证邮箱”改为“注册->验证邮箱->登录”

Default laravel verify system is :默认 Laravel 验证系统是:

  1. After user hit register button.用户点击注册按钮后。

  2. User auto login to system用户自动登录系统

  3. show verify page显示验证页面

What I want, is :我想要的是:

  1. User hit register button.用户点击注册按钮。

  2. User have to verify email before they can login to system用户必须先验证电子邮件才能登录系统

How can I do that.我怎样才能做到这一点。

I think a simple way would be to add a field to the user called active or verified .我认为一种简单的方法是向名为activeverified的用户添加一个字段。 In case the use did not verify their email they would not be allowed to login to the system (this can be easily achieved by overriding the login function with your own).如果用户没有验证他们的电子邮件,他们将不被允许登录系统(这可以通过使用您自己的登录功能轻松实现)。 This way the user can't access the system before he/she validates their email and that field is set to true.这样,用户在他/她验证他们的电子邮件并且该字段设置为 true 之前无法访问系统。 This also helps for later if you don't want to delete users and would rather deactivate them.如果您不想删除用户而宁愿停用它们,这也有助于以后使用。

In Http\\Controllers\\Auth\\RegisterController.php, insert this code on top part在 Http\\Controllers\\Auth\\RegisterController.php 中,在顶部插入此代码

use Illuminate\Http\Request;
use Illuminate\Auth\Events\Registered;

and override the register method in RegistersUsers trait by simply writing this code to your RegisterController.php并通过简单地将此代码写入 RegisterController.php 来覆盖 RegistersUsers trait 中的register方法

public function register(Request $request)
{
    $this->validator($request->all())->validate();

    event(new Registered($user = $this->create($request->all())));

    // $this->guard()->login($user);

    return $this->registered($request, $user)
                    ?: redirect($this->redirectPath());
}

Notice the commented code.注意注释的代码。 That's where users auto login after registration.这是用户注册后自动登录的地方。

The answer was already provided in Laracasts Laracasts中已经提供了答案

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM