国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > PHP > 正文

關于Laravel5.4實現(xiàn)多字段登錄的方法

2020-03-22 19:42:10
字體:
供稿:網(wǎng)友
這篇文章主要介紹了關于Laravel5.4實現(xiàn)多字段登錄的方法,有著一定的參考價值,現(xiàn)在分享給大家,有需要的朋友可以參考一下

最近在工作中遇到一個需求,需要實現(xiàn)多字段登錄的一個效果,就是可以使用手機或者郵箱任一種方式的登錄,現(xiàn)在將解決的過程分享出來,所以這篇文章主要給大家介紹了基于Laravel5.4實現(xiàn)多字段登錄功能的相關資料,需要的朋友可以參考借鑒,下面來一起看看吧。

前言

最近在一個項目中需要實現(xiàn)一個多字段登錄功能,簡單來說就是可以使用用戶名、郵箱或手機號任意一種方式進行登錄。所以本文就來給大家介紹了關于Laravel5.4多字段登錄的相關內(nèi)容,分享出來供大家參考學習,話不多說了,來一起看看詳細的介紹吧。

以下內(nèi)容基于laravel5.4

方法如下:

首先,通過artisan工具生成auth模塊

php artisan make:auth

這時候App/Http/Controllers目錄下會新增一個Auth目錄,該目錄下為注冊登錄相關的控制器,resources/views目錄下也會生成一些與注冊登錄相關的視圖

laravel的官方文檔中說手動認證用戶需要使用Illuminate/Support/Facades/Auth類的attempt方法,如下:

 ?phpnamespace App/Http/Controllers;use Illuminate/Support/Facades/Auth;html' target='_blank'>class LoginController extends Controller * Handle an authentication attempt. * @return Response public function authenticate() if (Auth::attempt([ email = $email, password = $password])) { // Authentication passed... return redirect()- intended( dashboard }

這個方法會根據(jù)你傳入的參數(shù)判斷數(shù)據(jù)庫中是否存在與之相匹配的用戶,如果存在并且密碼正確返回true,反之返回false

遂在LoginController中添加該方法,但是好像并沒有效果

于是開始觀察LoginController的實現(xiàn)機制,發(fā)現(xiàn)它實現(xiàn)了一個AuthenticatesUsers的trait,追蹤到這個trait的定義文件,發(fā)現(xiàn)這個文件就是我們想要的東西

里面有一個login方法,就是負責處理登錄的邏輯

/** * Handle a login request to the application. * @param /Illuminate/Http/Request $request * @return /Illuminate/Http/RedirectResponse|/Illuminate/Http/Response public function login(Request $request) // 表單驗證 $this- validateLogin($request); // If the class is using the ThrottlesLogins trait, we can automatically throttle // the login attempts for this application. We ll key this by the username and // the IP address of the client making these requests into this application. // 防止暴力破解,多次登錄失敗會根據(jù)IP鎖定 if ($this- hasTooManyLoginAttempts($request)) { $this- fireLockoutEvent($request); return $this- sendLockoutResponse($request); // 這個就是主要的負責判斷數(shù)據(jù)庫中是否存在相應的賬號和密碼的地方,我們需要重寫的就是attemptLogin方法 if ($this- attemptLogin($request)) { return $this- sendLoginResponse($request); // If the login attempt was unsuccessful we will increment the number of attempts // to login and redirect the user back to the login form. Of course, when this // user surpasses their maximum number of attempts they will get locked out. // 登錄失敗,失敗次數(shù)++,防止暴力破解 $this- incrementLoginAttempts($request); // 返回失敗響應 return $this- sendFailedLoginResponse($request); }

分析了一波這個文件,發(fā)現(xiàn)主要進行登錄判斷的就是attemptLogin方法,我們只要重寫這個方法即可,先看看原來的是怎么寫的,根據(jù)原來的進行重寫:

/** * Attempt to log the user into the application. * @param /Illuminate/Http/Request $request * @return bool protected function attemptLogin(Request $request) return $this- guard()- attempt( $this- credentials($request), $request- has( remember ) }

在LoginController重寫后:

public function attemptLogin(Request $request) $username = $request- input( username  $password = $request- input( password  // 驗證用戶名登錄方式 $usernameLogin = $this- guard()- attempt( [ username = $username, password = $password], $request- has( remember ) if ($usernameLogin) { return true; // 驗證手機號登錄方式 $mobileLogin = $this- guard()- attempt( [ mobile = $username, password = $password], $request- has( remember ) if ($mobileLogin) { return true; // 驗證郵箱登錄方式 $emailLogin = $this- guard()- attempt( [ email = $username, password = $password], $request- has( remember ) if ($emailLogin) { return true; return false; }

只需要用attempt方法進行多次判斷即可,只要成功就返回true,不成功繼續(xù)用其他字段進行判斷,都不成功則返回flase

測試,可以實現(xiàn)多字段登錄效果

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,更多相關內(nèi)容請關注PHP !

相關推薦:

Larave如何l實現(xiàn)短信注冊

使用Laravel實現(xiàn)定時任務的方法

以上就是關于Laravel5.4實現(xiàn)多字段登錄的方法的詳細內(nèi)容,PHP教程

鄭重聲明:本文版權歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 棋牌| 金堂县| 商河县| 鸡东县| 招远市| 连城县| 巍山| 汝南县| 五莲县| 宜章县| 乐业县| 长武县| 瓮安县| 蒙自县| 全州县| 怀化市| 遂川县| 磐石市| 定日县| 邯郸市| 大荔县| 湘潭县| 香港| 蚌埠市| 屏东县| 大悟县| 凤庆县| 息烽县| 武清区| 舞阳县| 华阴市| 望奎县| 尉氏县| 嘉黎县| 巧家县| 宝丰县| 洪湖市| 潞西市| 六盘水市| 承德县| 西昌市|