最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Laravel框架自定義驗(yàn)證過程實(shí)例分析

 更新時(shí)間:2019年02月01日 11:35:25   作者:trouble-i-am-in  
這篇文章主要介紹了Laravel框架自定義驗(yàn)證過程,結(jié)合實(shí)例形式分析了Laravel框架自定義驗(yàn)證的相關(guān)原理、路由、模型等操作技巧,需要的朋友可以參考下

本文實(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ù)組,比如下面:

public function checkLogin(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ò)誤:

Argument 1 passed to
Illuminate\Auth\EloquentUserProvider::validateCredentials()
must be an instance of
Illuminate\Contracts\Auth\Authenticatable,
instance of
App\User
given, called in /var/www/sample/vendor/laravel/framework/src/Illuminate/Auth/SessionGuard.php on line 379 and defined

簡單來說就是你傳遞的參數(shù)錯(cuò)誤了,以下是錯(cuò)誤演示:

namespace App\Model;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
}

你只要把User.php模型修改成下面的形式就對(duì)了:

<?php
namespace App;
use Illuminate\Auth\Authenticatable;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Auth\Passwords\CanResetPassword;
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract;
use Illuminate\Database\Eloquent\SoftDeletes;
class User extends Model implements AuthenticatableContract
{
  use Authenticatable, CanResetPassword;
  // 這個(gè)參數(shù)是關(guān)于軟刪除的,如果你有軟刪除需要,那么你可以加上
  // use SoftDeletes;
}

更多關(guān)于Laravel相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Laravel框架入門與進(jìn)階教程》、《php優(yōu)秀開發(fā)框架總結(jié)》、《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總

希望本文所述對(duì)大家基于Laravel框架的PHP程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • 一個(gè)簡單安全的PHP驗(yàn)證碼類、PHP驗(yàn)證碼

    一個(gè)簡單安全的PHP驗(yàn)證碼類、PHP驗(yàn)證碼

    這篇文章主要介紹了一個(gè)簡單安全的PHP驗(yàn)證碼類 PHP驗(yàn)證碼的相關(guān)資料,需要的朋友可以參考下
    2016-09-09
  • 在php的yii2框架中整合hbase庫的方法

    在php的yii2框架中整合hbase庫的方法

    這篇文章主要介紹了在php的yii2框架中整合hbase庫的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-09-09
  • wordpress自定義url參數(shù)實(shí)現(xiàn)路由功能的代碼示例

    wordpress自定義url參數(shù)實(shí)現(xiàn)路由功能的代碼示例

    這篇文章主要介紹了wordpress中實(shí)現(xiàn)路由功能的代碼示例,大家可以參考用代碼實(shí)現(xiàn)自己的路由功能
    2013-11-11
  • django中的ajax組件教程詳解

    django中的ajax組件教程詳解

    Ajax(Asynchronous Javascript And XML)翻譯成英文就是“異步Javascript和XML”。這篇文章主要介紹了django中的ajax組件的教程 ,需要的朋友可以參考下
    2018-10-10
  • phpstudy本地環(huán)境搭建超詳細(xì)圖文教程

    phpstudy本地環(huán)境搭建超詳細(xì)圖文教程

    這篇文章主要給大家介紹了關(guān)于phpstudy本地環(huán)境搭建超詳細(xì)圖文教程的相關(guān)資料,phpStudy是集安全、高效、功能于一體且完全免費(fèi)的一鍵服務(wù)器環(huán)境搭建軟件,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-07-07
  • PHP利用百度ai實(shí)現(xiàn)文本和圖片審核

    PHP利用百度ai實(shí)現(xiàn)文本和圖片審核

    這篇文章主要介紹了PHP利用百度ai實(shí)現(xiàn)文本和圖片審核,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • php生成唯一uid的解決方法詳解

    php生成唯一uid的解決方法詳解

    在用戶系統(tǒng)中,生成唯一uid,是很多初級(jí)程序員頭痛的事情,因?yàn)槟悴⒉荒鼙WC完全的唯一性,如果要保證唯一性,必須要查一次數(shù)據(jù)庫。本文將介紹php生成唯一uid的思路,希望能對(duì)大家有所幫助
    2021-11-11
  • Yii框架防止sql注入,xss攻擊與csrf攻擊的方法

    Yii框架防止sql注入,xss攻擊與csrf攻擊的方法

    這篇文章主要介紹了Yii框架防止sql注入,xss攻擊與csrf攻擊的方法,結(jié)合實(shí)例形式分析了Yii框架針對(duì)sql注入,xss攻擊與csrf攻擊的防范方法與相關(guān)函數(shù)調(diào)用注意事項(xiàng),需要的朋友可以參考下
    2016-10-10
  • PHP與Ajax相結(jié)合實(shí)現(xiàn)登錄驗(yàn)證小Demo

    PHP與Ajax相結(jié)合實(shí)現(xiàn)登錄驗(yàn)證小Demo

    AJAX即“Asynchronous Javascript And XML”(異步JavaScript和XML),是指一種創(chuàng)建交互式網(wǎng)頁應(yīng)用的網(wǎng)頁開發(fā)技術(shù)。接下來通過本文給大家分享PHP與Ajax相結(jié)合實(shí)現(xiàn)登錄驗(yàn)證小Demo,對(duì)php ajax實(shí)現(xiàn)登錄驗(yàn)證相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧
    2016-03-03
  • php生成二維碼不保存服務(wù)器還有下載功能的實(shí)現(xiàn)代碼

    php生成二維碼不保存服務(wù)器還有下載功能的實(shí)現(xiàn)代碼

    這篇文章主要介紹了php生成二維碼不保存服務(wù)器還有下載功能的實(shí)現(xiàn)代碼,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-08-08

最新評(píng)論

花莲县| 永兴县| 茌平县| 育儿| 张北县| 怀柔区| 磴口县| 阳城县| 津南区| 湾仔区| 勐海县| 耒阳市| 珠海市| 鲁山县| 沂水县| 宜春市| 镇远县| 泊头市| 高平市| 竹溪县| 长宁区| 宜都市| 佛坪县| 无为县| 曲靖市| 呼伦贝尔市| 达拉特旗| 海原县| 方城县| 万年县| 法库县| 辉南县| 潞城市| 乃东县| 乐昌市| 建湖县| 定远县| 黄冈市| 台东县| 延安市| 松桃|