2017-03-25 45 views
4

我想了解中間件如何在Laravel中工作。這是我的課程可以解釋它的作品如何。laravel中的中間件是什麼?

<?php 

namespace App\Http\Middleware; 

use Closure; 

class CheckAge 
{ 
    /** 
    * Handle an incoming request. 
    * 
    * @param \Illuminate\Http\Request $request 
    * @param \Closure $next 
    * @return mixed 
    */ 
    public function handle($request, Closure $next) 
    { 
     if ($request->age <= 200) { 
      return redirect('home'); 
     } 

     return $next($request); 
    } 

} 

感謝

+1

如果這是一個路由中間件,那麼當您訪問每條路徑(URL)時,如果您在路由或控制器構造函數中指定了此中間件,則必須通過此中間件。在拉拉維爾,當你向一個攜帶大量數據的鏈接提出請求時,在那個數據中必須有一個年齡段,如果年齡小於200,那麼你的請求直接回到本地路由,否則請求頁面,有中間件如Auth至極檢查是否授權 – webDev

+0

感謝您的指導。 –

回答

5

Middleware提供用於過濾進入你的應用HTTP請求方便的機制。例如,Laravel包含一個middleware,它驗證您的應用程序的用戶是否已通過身份驗證。如果用戶未通過身份驗證,則middleware會將用戶重定向到登錄屏幕。但是,如果用戶通過身份驗證,middleware將允許請求進一步進入應用程序。

Reference

它可以像進入應用程序中的每個HTTP請求的防火牆。

在您的代碼:

$request->age的是,在請求中提供,並且可以在每個HTTP請求進行檢查,如果它的值<= 200然後用戶重定向到家路線的變量。

+0

'對於進入應用程序的每個HTTP請求,它都像防火牆一樣工作。 - 它不是防火牆,如果您要檢查某些內容並將其重定向到其他位置或顯示某個4xx頁面,則它可以充當防火牆。證明是我可以請求第三方服務來記錄請求,然後調用'$ next($ request)' - 因爲你知道它不是防火牆。總之:'中間件是站在路由器和路由處理器之間的功能(或邏輯)。 ' – num8er

+1

感謝您的更正 –

+0

歡迎您(: – num8er

1

中間件提供用於過濾進入你的應用的HTTP請求一個方便的機制。例如,Laravel包含一箇中間件,用於驗證應用程序的用戶是否已通過身份驗證。如果用戶未通過身份驗證,則中間件會將用戶重定向到登錄屏幕。但是,如果用戶通過身份驗證,中間件將允許請求繼續進入應用程序。

當然,除了驗證之外,還可以編寫額外的中間件來執行各種任務。 CORS中間件可能負責將正確的標題添加到離開應用程序的所有響應中。日誌記錄中間件可能會將所有傳入請求記錄到應用程序中。

https://laravel.com/docs/5.4/middleware#introduction

中間件是一系列圍繞你的應用程序包裝是裝飾的方式,是不是你的應用程序邏輯的一部分的請求和響應。

https://mattstauffer.co/blog/laravel-5.0-middleware-filter-style

1

正如你所看到的中間件是什麼,現在讓我們看看代碼

public function handle($request, Closure $next) 
{ 
    if ($request->age <= 200) { 
     return redirect('home'); 
    } 

    return $next($request); 
} 

此代碼檢查每一個請求,並檢查年齡變量的請求。如果年齡小於200,那麼請求將重定向到家中,否則它將進入請求頁面。假設您請求​​頁面,但是如果您無法通過中間件條件,您將被重定向到/home,否則將轉到​​,即由return $next($request);給出。 Similary與auth和cors中間件一起工作。你可以類似地做一些檢查,如$request->user->role=='admin',並重定向到管理頁面或其他頁面。

return $next($request);這給你的下一個請求路由(已要求原路線)

0

中間件的主要目的是限制不必要的動作,在這裏你可以檢查用戶給定的輸入值,並可以允許纔有效。