首頁  >  文章  >  後端開發  >  什麼是中間件?聽滅絕師太趣說laravel中間件(圖)

什麼是中間件?聽滅絕師太趣說laravel中間件(圖)

不言
不言原創
2018-07-13 13:57:413199瀏覽

什麼是中間件?聽滅絕師太趣說laravel中間件(圖)

這篇文章主要介紹了什麼是中間件?聽妙絕師太趣說laravel中間件(圖),有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

#什麼是中間件?中間件顧名思義就是中間的件, 中間的層, 過濾一些請求的, 例如一些簡單的token驗證;以下文章詳細講解了laravel定義中間件和註冊中間件的方法和技巧。

一.定義中間件

標註的laravel可以直接在指令裡面定義

php artisan make:middleware CheckToken

#這樣就建立好了一個叫CheckToken的中間件類別, 這個類別在/app/Http/Middleware目錄下:

 什麼是中間件?聽滅絕師太趣說laravel中間件(圖)

點開以後程式碼長這樣:

什麼是中間件?聽滅絕師太趣說laravel中間件(圖)

#然後就可以去裡面寫點東西. 例如:

public function handle($request, Closure $next)
{
    if($request->input('token')!='minxintoken'){
        return redirect()->to('http://www.baidu.com');
    }
    return $next($request);
}

意思很明顯, 如果發送過來的資料裡面'token'欄位不等於minxintoken那麼就自動跳到http://www.baidu.com

當然了到此為止只是創建好了一個叫CheckToken的中間件, 並沒有啟用; 現在開始啟用;

二.註冊中間件

所謂的啟用, 是將這個中間件註冊到指定路由中;

註冊分兩種, 全域中間件和指定路由中間件, 

1. 全域中間件:

只要把對應中間件加到app/Http/Kernel.php的陣列屬性$middleware中就ok: (原文直接寫的CheckToken::class是不行的會報App\Http\ CheckToken不存在, 需要加上CheckToken.php的namespace才能正確取得到CheckToken)

#正解如下:

 什麼是中間件?聽滅絕師太趣說laravel中間件(圖)

瀏覽器直接輸入sample.test/ about就會直接蹦到www.baidu.com去, 但是這麼玩就不會:

 什麼是中間件?聽滅絕師太趣說laravel中間件(圖)

ok全域註冊到此為止.  一般來說全域設定不建議也不贊成, 因為每次都要帶上token確實是煩球; 

2.然後就來看看指定路由的中間件,

##這種中間件, 首先需要在app/Http/Kernel.php中分配給中間件一個key, 添加在該文件的$routeMiddleware裡面, 原裡面已經有很多個默認的key, 在後面追加一個就行:

 

什麼是中間件?聽滅絕師太趣說laravel中間件(圖)

加好了key以後, 去路由文件裡面啟用

Route::get('/','StaticPagesController@home')->middleware('token');

這樣訪問瀏覽器的效果就是直接輸sample.test/會重定向到百度, 而輸sample .test/?token=minxintoken就能進入到主頁

什麼是中間件?聽滅絕師太趣說laravel中間件(圖)

#當然了, 這樣有個弊端就是來一個路由, 要用就要敲一下, 不正常; 所以還有一個騷操作就是在Kernel.php檔案裡面有一個叫$middlewareGroups的陣列:   我們在web裡面把我們剛剛創建的CheckToken加進去,

 

什麼是中間件?聽滅絕師太趣說laravel中間件(圖)

然後所有的/route/web.php裡面的東西就要token=minxintoken才能訪問了;例如什麼sample.test/  sample.test/about   sample.test/help 等等;

以上就是本文的全部內容,希望對大家的學習有幫助,更多相關內容請關注PHP中文網!

相關課程推薦:

最新laravel商城實戰影片教學

全方位解讀Laravel框架及實戰影片教學

#輕鬆學會Laravel-基礎篇#

以上是什麼是中間件?聽滅絕師太趣說laravel中間件(圖)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn