Laravel 默認郵箱登錄改成用戶名登錄的實現方法

Laravel中默認的登錄是通過郵箱和密碼進行登錄的。那麼,怎麼樣才能用最少的改動將它改成用密碼登錄呢?下面神馬文庫小編給大家帶來了Laravel 默認郵箱登錄改成用戶名登錄的實現方法,需要的朋友一起看看吧

Laravel中默認的登錄是通過郵箱和密碼進行登錄的。那麼,怎麼樣才能用最少的改動將它改成用密碼登錄呢?

默認的,Laravel使用的是 Illuminate\Foundation\Auth\AuthenticatesUsers 這個trait完成登錄功能的。通過觀察 AuthenticatesUsers 的代碼,發現下面一段很有意思的代碼:

protected function validateLogin(Request $request)
  {
    $this->validate($request, [
      $this->username() => 'required|string',
      'password' => 'required|string',
    ]);
  }
  public function username()
  {
    return 'email';
  }

可以看到,是 因 爲trait裏定義了用戶名就是email,所以纔會使得驗證的時候通過用戶郵箱驗證。 所以我們只需要定義一個trait,覆蓋 AuthenticatesUsers 中的 username() 方法即可實現後端代碼通過用戶名驗證登錄。

新增的trait代碼

namespace App\Utils;

use Illuminate\Foundation\Auth\AuthenticatesUsers as LaravelAuthenticatesUsers;
trait AuthenticatesUsers {
 use LaravelAuthenticatesUsers;
  public function username()
  {
    return 'name';
  }
}

其實還有另一個簡單的修改方式,直接在LoginController中新增 username() 方法。由於當前定義方法會覆蓋trait的方法,因此也能達到修改的目的。但是會破壞登錄代碼的整體一致性,所以最好還是通過新增trait的方式實現。

同時要記得修改前端blade文件中對輸入參數的驗證,然後就可以使用用戶名登錄了

總結

以上所述是小編給大家介紹的Laravel 默認郵箱登錄改成用戶名登錄的實現方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回覆大家的。在此也非常感謝大家對神馬文庫網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請註明出處,謝謝!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章