濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > Laravel多用戶認(rèn)證系統(tǒng)示例詳解

Laravel多用戶認(rèn)證系統(tǒng)示例詳解

熱門(mén)標(biāo)簽:長(zhǎng)沙crm外呼系統(tǒng)業(yè)務(wù) 深圳外呼系統(tǒng)收費(fèi) 江蘇外呼電銷(xiāo)機(jī)器人報(bào)價(jià) 400電話辦理福州市 400電話申請(qǐng)方法收費(fèi) 專業(yè)電話機(jī)器人批發(fā)商 電話機(jī)器人危險(xiǎn)嗎 南寧高頻外呼回?fù)芟到y(tǒng)哪家好 離石地圖標(biāo)注

前言

自從Laravel5.2開(kāi)始,自帶的Auth認(rèn)證系統(tǒng)可以支持多個(gè)角色認(rèn)證了。就是說(shuō)你比如果有管理員、普通用戶這兩種角色,都可以通過(guò)同一個(gè)Auth系統(tǒng)來(lái)實(shí)現(xiàn)認(rèn)證。

本文將詳細(xì)給大家介紹關(guān)于Laravel多用戶認(rèn)證系統(tǒng)的相關(guān)內(nèi)容,分享出來(lái)供大家參考學(xué)習(xí),下面話不多說(shuō)了,來(lái)一起看看詳細(xì)的介紹吧。

#1 自動(dòng)生成代碼

Laravel自帶的Auth可以通過(guò)一行命令來(lái)生成相關(guān)的認(rèn)證控制器、模版以及路由:

php artisan make:auth

這樣就會(huì)生成一個(gè)AuthController認(rèn)證控制器和HomeController通用控制器,這個(gè)控制器沒(méi)什么用,就是登錄成功后跳轉(zhuǎn)的;還有就是一些登錄注冊(cè)需要的模版文件,在resource/view里面看看就知道了;而且還會(huì)在路由文件中生成相關(guān)認(rèn)證路由,源代碼在\Illuminate\Routing\Router::auth(); ,其實(shí)就是配置了一些登錄注冊(cè)用的:

public function auth() { 
 // Authentication Routes... 
 $this->get('login', 'Auth\AuthController@showLoginForm'); 
 $this->post('login', 'Auth\AuthController@login'); 
 $this->get('logout', 'Auth\AuthController@logout'); 
 // Registration Routes... 
 $this->get('register', 'Auth\AuthController@showRegistrationForm'); 
 $this->post('register', 'Auth\AuthController@register'); 
 // Password Reset Routes... 
 $this->get('password/reset/{token?}', 'Auth\PasswordController@showResetForm'); 
 $this->post('password/email', 'Auth\PasswordController@sendResetLinkEmail'); 
 $this->post('password/reset', 'Auth\PasswordController@reset'); 
}

#2 auth.php文件配置

這個(gè)是和認(rèn)證相關(guān)的配置文件,估計(jì)很多人看不懂里面一些概念,比如說(shuō)guard以及provider
這些,文檔也基本上是沒(méi)寫(xiě)。那么guard到底是什么東西呢?這個(gè)可以理解為就是一個(gè)角色,在guards
數(shù)組中的每一項(xiàng)都是一個(gè)角色,默認(rèn)的有web和api兩種,這就表示了當(dāng)前有這兩種角色會(huì)使用到認(rèn)證系統(tǒng)。當(dāng)然,這兩種肯定是不會(huì)滿足我們要求的,所以我們一般都會(huì)自定義一些guard。自定義也很簡(jiǎn)單,就是在guards數(shù)組增加一項(xiàng),其中driver就是表示這個(gè)認(rèn)證要怎么去保存用戶狀態(tài),一般是保存在session中,而provider就是下面provider數(shù)組的一項(xiàng),那么provider又是什么鬼呢?這個(gè)更好理解了,你要實(shí)現(xiàn)用戶認(rèn)證肯定要保存用戶名密碼對(duì)吧,那么provider就是告訴Laravel你的用戶信息保存在哪一張表里面,driver就是告訴了要使用那種方式來(lái)操作數(shù)據(jù)庫(kù)。

#3 認(rèn)證

其實(shí)Laravel自動(dòng)生成的代碼已經(jīng)可以滿足登錄注冊(cè)的需求了,但是每一個(gè)guard都需要一個(gè)AuthController來(lái),那么如何公用一個(gè)認(rèn)證控制器呢?這里就是用到guard這個(gè)東西了,因?yàn)榭梢员硎居脩羯矸輥?lái)進(jìn)行不同的邏輯。但是,在認(rèn)證控制器中無(wú)法獲取到這guard,所以我們可以通過(guò)路由參數(shù)的方式來(lái)實(shí)現(xiàn)。定義一個(gè)路由群組:

Route::group(['prefix'=>'{guard}'],function(){ Route::auth();});

在這個(gè)路由群組中我們?cè)O(shè)置前綴為guard參數(shù),這樣就可以在AuthController中獲取到當(dāng)前的guard了。一般情況下我們獲取路由參數(shù)都是通過(guò)依賴注入Request實(shí)例來(lái)獲取,但是這里也有一個(gè)坑那就是我在5.1版本之前路由參數(shù)都可以通過(guò)

$request->input('key')

這樣來(lái)獲取,但是在5.2中已經(jīng)不行了,必須通過(guò)

$request->key

來(lái)獲取,或者就是直接從路由實(shí)例中獲取,不知道這是什么原因。在AuthController控制器中使用了一些trait,這些trait就是實(shí)現(xiàn)了認(rèn)證注冊(cè)的邏輯,可以通過(guò)重寫(xiě)一些控制器的屬性來(lái)自定義邏輯。包括$redirectTo還有$guard以及$username等等,這些一看就知道第一個(gè)是登錄成功后跳轉(zhuǎn),第二個(gè)就是定義當(dāng)前使用的guard,第三個(gè)就是認(rèn)證使用的用戶名字段。所以我們可以在認(rèn)證控制器中通過(guò)獲取到的guard來(lái)自定義。

#4 路由保護(hù)

一般做認(rèn)證系統(tǒng)的,都是要來(lái)保護(hù)路由的,那么如何保護(hù)路由呢?文檔里面說(shuō)給需要保護(hù)的路由添加一個(gè)auth中間件,那么事實(shí)是怎樣的呢?事實(shí)也確實(shí)是這樣,不過(guò)文檔沒(méi)有說(shuō)的一點(diǎn)是,通過(guò)auth中間件保護(hù)的路由必須還要加上web中間件、必須還要加上web中間件、必須還要加上web中間件,重要的事情要說(shuō)三遍啊,不然會(huì)出現(xiàn)什么問(wèn)題呢?不管你認(rèn)證成功失敗都是會(huì)跳轉(zhuǎn)到/這條路由,這個(gè)大坑要注意!當(dāng)然你也可以在中間件中指定guard來(lái)讓Laravel知道通過(guò)那個(gè)來(lái)認(rèn)證,如果沒(méi)指定的話就是使用配置文件里面默認(rèn)的:

Route::get('profile', [ 'middleware' => 'auth:api', 'uses' => 'ProfileController@show']);

#5 獲取用戶實(shí)例

通過(guò)認(rèn)證后就可以通過(guò)Auth門(mén)面來(lái)獲取到當(dāng)前通過(guò)認(rèn)證的用戶實(shí)例。

$user = Auth::user();

這里還有一個(gè)要注意的是,以上的方式默認(rèn)獲取的是配置文件中的guard的,假如你當(dāng)前登錄的guard不是配置文件中的,就必須要這樣子來(lái)獲?。?br />

$user = Auth::guard('guard')->user();

#6 總結(jié)

總得來(lái)說(shuō),Laravel5.2自帶的Auth系統(tǒng)還是很好用的,只是有一些小坑文檔沒(méi)說(shuō)清楚,用過(guò)幾次之后就可以很熟悉了,可以給我們節(jié)約很多的開(kāi)發(fā)時(shí)間。

好了,以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

您可能感興趣的文章:
  • Laravel實(shí)現(xiàn)用戶注冊(cè)和登錄
  • Laravel 5框架學(xué)習(xí)之用戶認(rèn)證
  • Laravel重寫(xiě)用戶登錄簡(jiǎn)單示例
  • Laravel框架用戶登陸身份驗(yàn)證實(shí)現(xiàn)方法詳解
  • Laravel實(shí)現(xiàn)用戶多字段認(rèn)證的解決方法
  • Laravel5.5 實(shí)現(xiàn)后臺(tái)管理登錄的方法(自定義用戶表登錄)
  • 解決laravel5中auth用戶登錄其他頁(yè)面獲取不到登錄信息的問(wèn)題
  • laravel-admin 管理平臺(tái)獲取當(dāng)前登陸用戶信息的例子
  • Laravel6.2中用于用戶登錄的新密碼確認(rèn)流程詳解
  • Laravel 微信小程序后端實(shí)現(xiàn)用戶登錄的示例代碼
  • Laravel用戶授權(quán)系統(tǒng)的使用方法示例
  • laravel利用中間件防止未登錄用戶直接訪問(wèn)后臺(tái)的方法
  • Laravel 框架基于自帶的用戶系統(tǒng)實(shí)現(xiàn)登錄注冊(cè)及錯(cuò)誤處理功能分析

標(biāo)簽:太原 白酒營(yíng)銷(xiāo) 濱州 興安盟 株洲 南昌 南京 曲靖

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Laravel多用戶認(rèn)證系統(tǒng)示例詳解》,本文關(guān)鍵詞  Laravel,多用戶,認(rèn)證,系統(tǒng),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Laravel多用戶認(rèn)證系統(tǒng)示例詳解》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于Laravel多用戶認(rèn)證系統(tǒng)示例詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    铅山县| 舞阳县| 陆河县| 宁波市| 齐齐哈尔市| 常山县| 奈曼旗| 页游| 郴州市| 文安县| 益阳市| 阳曲县| 九江市| 恩平市| 留坝县| 鹤岗市| 余江县| 界首市| 施甸县| 上虞市| 类乌齐县| 磐石市| 枝江市| 竹山县| 松潘县| 宁远县| 宿州市| 繁昌县| 旅游| 龙里县| 河池市| 吉安市| 乌拉特前旗| 邹城市| 曲阜市| 龙泉市| 米脂县| 北宁市| 上杭县| 全南县| 弋阳县|