欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

使用Laravel怎么實(shí)現(xiàn)一個(gè)多用戶認(rèn)證系統(tǒng)-創(chuàng)新互聯(lián)

本篇文章為大家展示了使用Laravel怎么實(shí)現(xiàn)一個(gè)多用戶認(rèn)證系統(tǒng),內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。

專注于為中小企業(yè)提供做網(wǎng)站、成都網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)梅列免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了成百上千家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

#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)寫。那么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ò)重寫一些控制器的屬性來(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門面來(lái)獲取到當(dāng)前通過(guò)認(rèn)證的用戶實(shí)例。


$user = Auth::user();

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


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

上述內(nèi)容就是使用Laravel怎么實(shí)現(xiàn)一個(gè)多用戶認(rèn)證系統(tǒng),你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

當(dāng)前題目:使用Laravel怎么實(shí)現(xiàn)一個(gè)多用戶認(rèn)證系統(tǒng)-創(chuàng)新互聯(lián)
網(wǎng)頁(yè)鏈接:http://chinadenli.net/article26/sphjg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT軟件開(kāi)發(fā)網(wǎng)站收錄商城網(wǎng)站關(guān)鍵詞優(yōu)化手機(jī)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁(yè)設(shè)計(jì)公司