1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務時間:8:30-17:00
      你可能遇到了下面的問題
      關閉右側工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      如何使用Laravel框架自定義驗證-創(chuàng)新互聯(lián)

      本篇文章給大家分享的是有關如何使用Laravel框架自定義驗證,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

      專注于為中小企業(yè)提供網(wǎng)站設計制作、成都網(wǎng)站建設服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)定陶免費做網(wǎng)站提供優(yōu)質的服務。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了1000多家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設實現(xiàn)規(guī)模擴充和轉變。

      首先,你需要明白一點,當你開啟auth中間件的時候,其實是調(diào)用了在app/Http/Kernel.php中的


      'auth' => \Illuminate\Auth\Middleware\Authenticate::class,

      但是這里先不用去糾結這個文件,這里直接看開啟這個驗證之后會怎樣。首先,如果你去訪問開啟這個驗證的控制器,但是你又沒有登錄的話,那么會默認去搜索login路由,所以你需要在路由中設置該路由:

      Route::get('login','AnyControllerName@AnyFunctionName')->name('login');

      而且雖然name('login')可設可不設,但是好加上。接著頁面就會跳轉到你設置的供用戶填寫表單的頁面,該表單的提交路由你也一樣要設置好:

      Route::post('login','AnyControllerName@AnyFunctionName');

      其實由于這里已經(jīng)由我們可控了,即,我們可以手動確定表單提交到哪個控制器以及對應該控制器下的方法,所以接下來的問題就是如何使Laravel知道我們確定該用戶已經(jīng)通過了驗證了。

      這個時候可以使用Auth::attempt()函數(shù),這個函數(shù)的作用原理是將你傳遞進去的數(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
        ]);
      }

      下面是重點!!!

      其中,我們使用了3個參數(shù)$user_name,$user_id,$password,attempt會把除了$password之外的內(nèi)容作為$where的內(nèi)容,從數(shù)據(jù)庫中搜索記錄,如果記錄為0,那么當然不用說了,驗證失敗,但是存在該記錄時,就需要去匹配$password是否正確。

      laravel保存$password的方式是使用PHP的函數(shù)password_hash,該函數(shù)能計算傳入值的哈希值,而且該函數(shù)需要第二個參數(shù),指定哈希處理的方式,Laravel中該參數(shù)名為PASSWORD_BCRYPT,Laravel會將密碼經(jīng)過該函數(shù)處理后再保存。(至于如何做到的,暫時沒有機會深究。)

      假設你的密碼為123456,那么你保存在數(shù)據(jù)庫中的值就是

      password_hash('123456','PASSWORD_BCRYPT')

      Auth::attempt()會將你提交過來的值,做password_hash($post_password,'PASSWORD_BCRYPT')處理,然后跟數(shù)據(jù)庫中的存儲值進行比較,相等則驗證通過,不相等,則自然驗證失敗。

      驗證通過后,使用Auth::login(Auth::user());就可以完成用戶的登錄驗證了。

      這里再穿插一個知識點,當你使用Eloquent作為數(shù)據(jù)庫驅動時,你需要新建一個用戶類,User.php,你可以使用命令行來新建該模型,也可以直接手動新建,但是注意,命令行新建的該模型是存在問題的,Auth::attempt()中會去嘗試調(diào)用該模型,但是其中調(diào)用的類類型不是Model!!!所以你自以為新建好了User.php后,發(fā)現(xiàn)會報以下錯誤:

      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ù)錯誤了,以下是錯誤演示:

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

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

      以上就是如何使用Laravel框架自定義驗證,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降摹OM隳芡ㄟ^這篇文章學到更多知識。更多詳情敬請關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


      本文標題:如何使用Laravel框架自定義驗證-創(chuàng)新互聯(lián)
      分享路徑:http://www.ef60e0e.cn/article/dihspd.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        葵青区| 常宁市| 灵璧县| 舟曲县| 彭山县| 什邡市| 博乐市| 井研县| 沙湾县| 苗栗县| 浦东新区| 巴东县| 麟游县| 宁都县| 太湖县| 娄底市| 古浪县| 怀来县| 眉山市| 眉山市| 烟台市| 凌海市| 靖西县| 奈曼旗| 来凤县| 隆昌县| 剑河县| 邻水| 米泉市| 庆云县| 乐亭县| 兰西县| 随州市| 岗巴县| 南郑县| 商丘市| 屏山县| 象州县| 奉新县| 卢湾区| 安庆市|