laravel內置了一箇中間件來驗證用戶是否通過認證,若是用戶沒有通過認證,中間件會將用戶重定向到登陸頁面,不然若是用戶通過認證,中間件就會容許請求繼續往前進入下一步操做。php
固然,除了認證以外,中間件還能夠被用來處理更多其它任務。好比:CORS 中間件能夠用於爲離開站點的響應添加合適的頭(跨域);日誌中間件能夠記錄全部進入站點的請求。laravel
Laravel框架自帶了一些中間件,包括認證、CSRF 保護中間件等等。全部的中間件都位於 app/Http/Middleware
目錄。跨域
中間是請求前仍是請求後執行取決於中間件自己,如下中間件會在請求處理前執行一些任務:session
1 <?php 2 3 namespace App\Http\Middleware; 4 5 use Closure; 6 7 class Common 8 { 9 10 public function handle($request, Closure $next) 11 { 12 // 執行動做 13 14 if(!$request->session()->has('huser')){ 15 return redirect("login/index"); 16 } 17 return $next($request); 18 19 20 } 21 }
而下面這個中間件則會在請求處理後執行其任務:app
1 <?php 2 3 namespace App\Http\Middleware; 4 5 use Closure; 6 7 class Common 8 { 9 10 public function handle($request, Closure $next) 11 { 12 $response = $next($request); 13 14 // 執行動做 15 if(!$request->session()->has('huser')){ 16 return redirect("login/index"); 17 } 18 19 return $response; 20 21 22 23 } 24 }
1 Route::get('/',function(){ 2 return redirect('home/index'); 3 })->middleware('common'); 4 5 6 7 Route::group(['middleware' => ['common']], function() { 8 Route::controller("db","DataBaseController"); 9 }); 10 11 12 Route::controller("home","HomeController",['middleware'=>'common']);