laravel中間件使用


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']);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM