laravel內置了一個中間件來驗證用戶是否經過認證,如果用戶沒有經過認證,中間件會將用戶重定向到登錄頁面,否則如果用戶經過認證,中間件就會允許請求繼續往前進入下一步操作。
當然,除了認證之外,中間件還可以被用來處理更多其它任務。比如:CORS 中間件可以用於為離開站點的響應添加合適的頭(跨域);日志中間件可以記錄所有進入站點的請求。
Laravel框架自帶了一些中間件,包括認證、CSRF 保護中間件等等。所有的中間件都位於 app/Http/Middleware
目錄。
中間是請求前還是請求后執行取決於中間件本身,以下中間件會在請求處理前執行一些任務:
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 }
而下面這個中間件則會在請求處理后執行其任務:
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']);