首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel注册并通过电话号码和短信确认登录

Laravel注册并通过电话号码和短信确认登录
EN

Stack Overflow用户
提问于 2018-02-20 18:27:10
回答 1查看 7.8K关注 0票数 1

我想做一个测试项目,用户只需设置一个电话号码和密码就可以注册。在下一步,我想要一个包裹或smth那样,这将发送短信到这个号码与确认码。因此,用户输入此代码后,它将被注册、验证并重定向到主页。

关于我必须使用哪些组件/库/包以及如何修改标准的Laravel注册/身份验证,有什么建议吗?谢谢!

EN

回答 1

Stack Overflow用户

发布于 2018-06-12 23:39:48

您可以按照以下步骤使用用户名、电子邮件或电话登录。我还包含了用于扩展用途的弹头和头像。但是,您可以根据需要对其进行编辑和更改。

迁移

代码语言:javascript
复制
Schema::create('users', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->string('username')->unique();
            $table->string('phone')->unique();
            $table->string('email')->unique();
            $table->string('password');
            $table->string('avatar');
            $table->string('slug');
            $table->boolean('gender');
            $table->rememberToken();
            $table->timestamps();
        });

在你的Auth/RegisterController中,修改如下

代码语言:javascript
复制
protected function validator(array $data)
    {
        return Validator::make($data, [
            'name' => 'required|string|max:255',
            'username' => 'required|string|max:20|unique:users',
            'phone' => 'required|string|max:15|unique:users', //you can also use required|regex:/[0-9]{10}/|digits:10 as per your needs
            'email' => 'required|string|email|max:255|unique:users',
            'password' => 'required|string|min:6|dumbpwd|confirmed',
            'gender' => 'required|bool',
        ]);
    }

protected function create(array $data)
    {
        if($data['gender'])
          {
            $avatar = 'male.png';
          }
        else
          {
            $avatar = 'female.png';
          }

        return User::create([
            'name' => $data['name'],
            'gender' => $data['gender'],
            'username' => $data['username'],
            'phone' => $data['phone'],
            'email' => $data['email'],
            'password' => bcrypt($data['password']),
            'slug' => str_slug($data['username']),
            'avatar' => $avatar,
        ]);
    }

现在在您的logincontroller中添加以下内容

代码语言:javascript
复制
protected function credentials(Request $request)
      {
        if(is_numeric($request->get('email'))){
          return ['phone'=>$request->get('email'),'password'=>$request->get('password')];
        }
        elseif (filter_var($request->get('email'), FILTER_VALIDATE_EMAIL)) {
          return ['email' => $request->get('email'), 'password'=>$request->get('password')];
        }
        return ['username' => $request->get('email'), 'password'=>$request->get('password')];
      }

我没有包含模型和视图,因为它们很容易。您只需将新的列字段添加到模型数组中,并在注册表单上为用户名、电话、性别和头像添加额外的字段。

在您的登录视图表单上,将输入类型设置为文本,您可以在其中输入电子邮件、用户名或电话,并且密码字段保持不变。

您可以进一步轻松地扩展此功能,以使用以下任何一个包通过代码或链接激活用户。我使用https://github.com/bestmomo/laravel-email-confirmation激活电子邮件,效果非常好。

我还没有尝试过使用代码进行手机验证和激活,但我发现有几个包可以帮助你使用https://github.com/phonedotcom/sms-verification-laravel

你可以在github或packagist上搜索到twilio,google 2 step search和其他许多包。希望这能有所帮助。祝你编码愉快!

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48883060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档