Laravel6:自定义多字段登录,用户名,邮箱等
废话不多说,直接上干货【亲测有效!】
App下创建Traits目录
创建 AuthenticatesUsers.php 文件
<?php namespace App\Traits; use Illuminate\Foundation\Auth\AuthenticatesUsers as LaravelAuthenticatesUsers; trait AuthenticatesUsers { use LaravelAuthenticatesUsers; static public function username() { // 获取用户提交数据 $username = request()->get('username'); // 判断用户提交的数据,检测应该使用哪种方式登录 switch ($username) { case filter_var($username, FILTER_VALIDATE_EMAIL): return 'email'; break; case preg_match("/^1[34578]\d{9}$/", $username) == 1: return 'mobile'; break; default: return 'username'; break; } } }
LoginController.php中不需要定义 username()方法
应用:
在自己的控制器中引用
use App\Traits\AuthenticatesUsers; ...... //用户登录 public function login(Request $request) { $loginMark = AuthenticatesUsers::username(); $token = Auth::guard('api')->attempt([$loginMark => $request->username, 'password' => $request->password]); if ($token) { return $this->setMessage('登录成功!' . $loginMark)->setStatusCode(201)->success(['token' => 'bearer ' . $token]); } return $this->failed('账号或密码错误!', 400); }
测试
(1).手机号
(2).邮箱
(3).用户名完结!
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: