我想做一个测试项目,用户只需设置一个电话号码和密码就可以注册。在下一步,我想要一个包裹或smth那样,这将发送短信到这个号码与确认码。因此,用户输入此代码后,它将被注册、验证并重定向到主页。
关于我必须使用哪些组件/库/包以及如何修改标准的Laravel注册/身份验证,有什么建议吗?谢谢!
发布于 2018-06-12 23:39:48
您可以按照以下步骤使用用户名、电子邮件或电话登录。我还包含了用于扩展用途的弹头和头像。但是,您可以根据需要对其进行编辑和更改。
迁移
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中,修改如下
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中添加以下内容
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和其他许多包。希望这能有所帮助。祝你编码愉快!
https://stackoverflow.com/questions/48883060
复制相似问题