




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第Laravel框架自定義驗(yàn)證過程實(shí)例分析本文實(shí)例講述了Laravel框架自定義驗(yàn)證過程。分享給大家供大家參考,具體如下:
首先,你需要明白一點(diǎn),當(dāng)你開啟auth中間件的時(shí)候,其實(shí)是調(diào)用了在app/Http/Kernel.php中的
'auth'=\Illuminate\Auth\Middleware\Authenticate::class,
但是這里先不用去糾結(jié)這個(gè)文件,這里直接看開啟這個(gè)驗(yàn)證之后會(huì)怎樣。首先,如果你去訪問開啟這個(gè)驗(yàn)證的控制器,但是你又沒有登錄的話,那么會(huì)默認(rèn)去搜索login路由,所以你需要在路由中設(shè)置該路由:
Route::get('login','AnyControllerName@AnyFunctionName')-name('login');
而且雖然name('login')可設(shè)可不設(shè),但是最好加上。接著頁面就會(huì)跳轉(zhuǎn)到你設(shè)置的供用戶填寫表單的頁面,該表單的提交路由你也一樣要設(shè)置好:
Route::post('login','AnyControllerName@AnyFunctionName');
其實(shí)由于這里已經(jīng)由我們可控了,即,我們可以手動(dòng)確定表單提交到哪個(gè)控制器以及對(duì)應(yīng)該控制器下的方法,所以接下來的問題就是如何使Laravel知道我們確定該用戶已經(jīng)通過了驗(yàn)證了。
這個(gè)時(shí)候可以使用Auth::attempt()函數(shù),這個(gè)函數(shù)的作用原理是將你傳遞進(jìn)去的數(shù)組,比如下面:
publicfunctioncheckLogin(Request$request){
$user_name=$request-user_name;
$user_id=$request-user_id;
$password=$request-password;
Auth::attempt([
'user_name'=$user_name,
'user_id'=$user_id,
'password'=$password
下面是重點(diǎn)?。?!
其中,我們使用了3個(gè)參數(shù)$user_name,$user_id,$password,attempt會(huì)把除了$password之外的內(nèi)容作為$where的內(nèi)容,從數(shù)據(jù)庫中搜索記錄,如果記錄為0,那么當(dāng)然不用說了,驗(yàn)證失敗,但是存在該記錄時(shí),就需要去匹配$password是否正確。
laravel保存$password的方式是使用PHP的函數(shù)password_hash,該函數(shù)能計(jì)算傳入值的哈希值,而且該函數(shù)需要第二個(gè)參數(shù),指定哈希處理的方式,Laravel中該參數(shù)名為PASSWORD_BCRYPT,Laravel會(huì)將密碼經(jīng)過該函數(shù)處理后再保存。(至于如何做到的,暫時(shí)沒有機(jī)會(huì)深究。)
假設(shè)你的密碼為123456,那么你保存在數(shù)據(jù)庫中的值就是
password_hash('123456','PASSWORD_BCRYPT')
Auth::attempt()會(huì)將你提交過來的值,做password_hash($post_password,'PASSWORD_BCRYPT')處理,然后跟數(shù)據(jù)庫中的存儲(chǔ)值進(jìn)行比較,相等則驗(yàn)證通過,不相等,則自然驗(yàn)證失敗。
驗(yàn)證通過后,使用Auth::login(Auth::user());就可以完成用戶的登錄驗(yàn)證了。
這里再穿插一個(gè)知識(shí)點(diǎn),當(dāng)你使用Eloquent作為數(shù)據(jù)庫驅(qū)動(dòng)時(shí),你需要新建一個(gè)用戶類,User.php,你可以使用命令行來新建該模型,也可以直接手動(dòng)新建,但是注意,命令行新建的該模型是存在問題的,Auth::attempt()中會(huì)去嘗試調(diào)用該模型,但是其中調(diào)用的類類型不是Model?。?!所以你自以為新建好了User.php后,發(fā)現(xiàn)會(huì)報(bào)以下錯(cuò)誤:
Argument1passedto
Illuminate\Auth\EloquentUserProvider::validateCredentials()
mustbeaninstanceof
Illuminate\Contracts\Auth\Authenticatable,
instanceof
App\User
given,calledin/var/www/sample/vendor/laravel/framework/src/Illuminate/Auth/SessionGuard.phponline379anddefined
簡單來說就是你傳遞的參數(shù)錯(cuò)誤了,以下是錯(cuò)誤演示:
namespaceApp\Model;
useIlluminate\Database\Eloquent\Model;
classUserextendsModel
你只要把User.php模型修改成下面的形式就對(duì)了:
namespaceApp;
useIlluminate\Auth\Authenticatable;
useIlluminate\Database\Eloquent\Model;
useIlluminate\Auth\Passwords\CanResetPassword;
useIlluminate\Contracts\Auth\AuthenticatableasAuthenticatableContract;
useIlluminate\Contracts\Auth\CanResetPasswordasCanResetPasswordContract;
useIlluminate\Database\Eloquent\SoftDeletes;
classUserextendsModelimplementsAuthenticatableContract
useAuthenticatable,CanResetPassword;
//這個(gè)參數(shù)是關(guān)于軟刪除的,如果你有軟刪除需要,那么你可以加上
//useSoftDeletes;
更多關(guān)于Laravel相關(guān)內(nèi)容感興趣
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- T/CHINABICYCLE 20-2023時(shí)尚產(chǎn)品指南自行車與電動(dòng)自行車
- T/CHINABICYCLE 1-2019租賃自行車技術(shù)規(guī)范
- T/CGCC 29-2019微商運(yùn)營從業(yè)人員技術(shù)條件
- T/CECS 10237-2022綠色建材評(píng)價(jià)供暖空調(diào)輸配系統(tǒng)用風(fēng)機(jī)、風(fēng)管、水泵
- T/CECS 10037-2019綠色建材評(píng)價(jià)衛(wèi)生潔具
- T/CCSAS 048-2023危險(xiǎn)化學(xué)品電子標(biāo)簽選型技術(shù)規(guī)范
- T/CCSAS 044-2023化工過程本質(zhì)安全化評(píng)估指南
- T/CCOA 33-2020平房倉氣密改造操作規(guī)范
- T/CCOA 13-2020稻殼活性炭
- T/CCIA 0016-2023無縫貼花裝飾瓷器
- 硅熱式風(fēng)速傳感器輸出穩(wěn)定性的多維度解析與優(yōu)化策略研究
- Brand KPIs for spirits Tito's Handmade Vodka in the United States-外文版培訓(xùn)課件(2025.2)
- 2025屆深圳市高三年級(jí)第二次調(diào)研試題講評(píng) 課件
- 北京2025年中國專利信息中心招聘14名社會(huì)在職人員筆試歷年參考題庫附帶答案詳解
- 中級(jí)審計(jì)師考試真題模擬試題及答案
- 無人機(jī)飛行器編程基本知識(shí)試題及答案
- 2024-2025部編版小學(xué)道德與法治二年級(jí)下冊期末考試卷及答案 (三套)
- 中華人民共和國保守國家秘密法實(shí)施條例
- 機(jī)票代理合作協(xié)議
- 普利茲克獎(jiǎng)歷屆得主及作品賞析
- 用藥錯(cuò)誤報(bào)告處理制度
評(píng)論
0/150
提交評(píng)論