廢話不多說,直接上乾貨【親測有效!】
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 協議》,轉載必須註明作者和本文連結