国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - 基于Laravel5.4實現(xiàn)多字段登錄功能方法示例

基于Laravel5.4實現(xiàn)多字段登錄功能方法示例

2021-06-17 15:54FMW6 PHP教程

最近在工作中遇到一個需求,需要實現(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方法,如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
 
namespace App\Http\Controllers;
 
use Illuminate\Support\Facades\Auth;
 
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方法,就是負責處理登錄的邏輯

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/**
  * 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ù)原來的進行重寫:

?
1
2
3
4
5
6
7
8
9
10
11
12
/**
  * 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重寫后:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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)容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對服務器之家的支持。

原文鏈接:https://segmentfault.com/a/1190000010475708

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产日韩欧美精品 | 99久久夜色精品国产亚洲1000部 | 国产中文字幕在线观看 | 欧美日韩第一页 | 丁香婷婷综合激情五月色 | 成人免费看片 | 亚洲人视频在线观看 | 日韩精品毛片免费看 | 亚洲 欧美 日韩在线 | 精精国产xxxx视频在线野外 | 亚洲精品麻豆 | 一区二区三区亚洲 | 日韩色爱 | 美女羞羞网站 | 成人影院在线 | 在线a视频 | 精品国产欧美一区二区 | 精品久久久久久久久久久久久久久久久久久 | 欧美成人精品一区二区三区 | 成人自拍视频 | 国产亚洲一区二区三区 | 欧美日韩视频在线 | 亚洲欧美在线人成swag | 中文字幕日韩欧美一区二区三区 | youjizz国产 | 亚洲国产精品一二三区 | 97成人在线 | 91av电影在线观看 | 亚洲激情一区 | 老黄网站在线观看 | 欧美日韩中文在线 | 爱操av | 免费看国产黄色 | 欧美久久久 | аⅴ资源新版在线天堂 | 糈精国产xxxx在线观看 | 国产黄色在线观看 | 一区二区三区四区在线 | 国产精品原创av片国产免费 | 欧美日韩电影一区二区三区 | av在线播放不卡 |