如何把 Laravel 預設郵箱登入改成使用者名稱登入

froyot 發表於 2019-08-11

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預設郵箱登入改成使用者名稱登入

文章有【寫PHP的老王】釋出,喜歡的可以關注公眾號【寫PHP的老王】

寫PHP的老王


相關文章

Laravel Passport OAuth 資料庫查詢改快取優化 資料庫|Laravel

Laravel Passport OAuth 資料庫查詢改快取優化

1、oauth_clients 表查詢快取修改-- 找到路徑 project/vendor/laravel/passport/src/Client.php 檔案註釋該行程式碼,不然查詢出來存快取無法獲
發現使用 Laravel 的許可權工具包不會使用,有同感的? Laravel

發現使用 Laravel 的許可權工具包不會使用,有同感的?

感覺看的有點懵,我不用工具包,自己建立表 用原生思路的程式碼寫 能寫 出來居於 auth 許可權控制選單按鈕的許可權管理,看來我還是太菜了 -,-
老王帶你看原始碼|Laravel 的路由匹配的過程都幹了些什麼? Laravel

老王帶你看原始碼|Laravel 的路由匹配的過程都幹了些什麼?

Laravel 的路由配置有很多,可以設定域名,設定請求協議,設定請求方式,請求路徑。那麼,Laravel在獲取到請求之後,去匹配路由都做了些什麼呢?本文以Laravel5.8原始碼講解,帶你一步步看
安裝 Laravel/horizon 踩過的坑 Laravel

安裝 Laravel/horizon 踩過的坑

報錯圖:問題原因我們簡單翻譯一下提示資訊就可以看到,整體說的是laravel/horizon依賴或者需要ext-pcntl擴充,我們可以在php.ini中修改並使用。這就是大概的意思,但是我去php.
『輕鬆部署 Laravel 應用』系列文章快捷連結 Laravel

『輕鬆部署 Laravel 應用』系列文章快捷連結

Wi1dcard 同學的『輕鬆部署 Laravel 應用』系列文章快捷連結《開篇》《00. 登入伺服器》 《01. 寶塔皮膚》《02. 一鍵指令碼》 《03. 探尋一鍵指令碼》《04. 手動部署 -
Laravel passport 多端使用者使用 Laravel

Laravel passport 多端使用者使用

說明使用 passport 進行 admin 端和 customer 端的使用者認證。雖然教程很多,但是我並沒有參照其他教程完整的走下來,所以記錄了自己的開發流程,希望能對其他人有所幫助。github
Laravel/Homestead box v8.2.1 分享 Laravel

Laravel/Homestead box v8.2.1 分享

百度雲:https://pan.baidu.com/s/1oj9g9nAORLswYSvKr...密碼:kvf4
Windows 下 Laravel Mix 資源編譯過程以及產生的錯誤解決 Laravel

Windows 下 Laravel Mix 資源編譯過程以及產生的錯誤解決

環境說明虛擬機器 : Homestead ;物理機 : Windows 10 x64 系統 ;編輯器 : Sublime Text 3 ;終端 : git bash ;說明:以上環境不必完全保持一致
Laravel Vue 下拉框聯動小技巧 Vue|Laravel

Laravel Vue 下拉框聯動小技巧

最近在做一個後臺管理相關的東西,有一個關於下拉框聯動的小技巧可以分享給大家,寫好後不用更改前端程式碼,只需更改後端相應的配置,即可增加相對應的聯動。比如有兩個下拉框一個省和一個市的下拉框,這裡只是拿省
Laravel 資料庫裡的資料刪除 資料庫|Laravel

Laravel 資料庫裡的資料刪除

想請問Laravel資料庫裡的資料如何刪除讓id重新編號,單純刪除資料庫的資料,在重新增加id會從被刪掉的id後開始新增,而不會從刪掉的id開始編號,我該使用什麼artisan command去刪除來
分享連結:序言《Laravel 之道》 Laravel

分享連結:序言《Laravel 之道》

分享連結:序言《Laravel 之道》
Laravelapi 自定義 response 格式 Laravel

Laravelapi 自定義 response 格式

laravel的http路由檔案有兩個api.php和web.php➜  ~ ll /Users/shiwenyuan/test/test_demo/routestotal 32drwxr-xr-x