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

 

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/16015.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论