laravel中間件使用

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']);
相關文章
相關標籤/搜索