当前位置:首页 > CMS教程 > 其它CMS > 列表

Laravel5.1 框架Middleware中间件基本用法实例分析

发布:smiling 来源: PHP粉丝网  添加日期:2022-02-02 10:43:28 浏览: 评论:0 

本文实例讲述了Laravel5.1 框架Middleware中间件基本用法,分享给大家供大家参考,具体如下:

中间件?什么鬼? 大家第一次接触这个词都会有这么个疑问,但它其实没那么神秘。

一句话就可以解释它:过滤HTTP请求专用机制。

为什么要使用中间件?

过滤HTTP请求是可以写在别的地方,比如说控制器中 路由中,BUT 抽象出来就有它的理由,比如说Laravel自带的Auth中间件 它要求必须是登录进来的用户才有权访问 如果没有登录就跳转到登录页面,这样的逻辑在很多场景都会用到 这很明显了吧 你不可能在每个控制器或每一个路由都单独实现以便,直接抽出来多方便。

1 使用中间件

1.1 创建中间件

咱创建中间件是使用artisan控制台的:

php artisan make:middleware TestMiddleware

创建好后位于:app/Http/Middleware

1.2 解读中间件

首先我们来看看新创建的中间件是什么模样儿:

  1. class TestMiddleware 
  2.   /** 
  3.    * Handle an incoming request. 
  4.    * 
  5.    * @param \Illuminate\Http\Request $request 
  6.    * @param \Closure $next 
  7.    * @return mixed 
  8.    */ 
  9.   public function handle($request, Closure $next
  10.   { 
  11.     return $next($request); 
  12.   } 

解读:middleware中只有 “handle”函数 这个函数呢接受两个参数

它的流程是接受request参数 取出一些东西做验证 如果逻辑通过 执行next闭包。

如果你还是不太懂的话 没关系 咱上实例

1.3 编写中间件

  1. public function handle($request, Closure $next
  2.   // 如果传入的id参数等于0 就跳转到首页。 
  3.   if ($request->input('id') == 0){ 
  4.     return redirect('/'); 
  5.   } 
  6.   // id参数不等于0 则为通过 进行默认的下一步操作。 
  7.   return $next($request); 

完事儿后我们需要在 app/Http/Kernel.php 中进行注册:

  1. /** 
  2.  * The application's global HTTP middleware stack. 
  3.  * 
  4.  * @var array 
  5.  */ 
  6. protected $middleware = [ 
  7.   \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class
  8.   \App\Http\Middleware\EncryptCookies::class
  9.   \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class
  10.   \Illuminate\Session\Middleware\StartSession::class
  11.   \Illuminate\View\Middleware\ShareErrorsFromSession::class
  12.   \App\Http\Middleware\VerifyCsrfToken::class
  13. ]; 
  14. /** 
  15.  * The application's route middleware. 
  16.  * 
  17.  * @var array 
  18.  */ 
  19. protected $routeMiddleware = [ 
  20.   'auth' => \App\Http\Middleware\Authenticate::class
  21.   'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class
  22.   'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class
  23.   // 把我们创建的middleware注册到这里 
  24.   'test' => \App\Http\Middleware\TestMiddleware::class
  25. ]; 

注意:我们可以瞧见啊 Kernel 中有两个数组 如果你希望在全局中使用 就注册在middleware数组中,如果你想要局部使用middleware 那么就在routeMiddleware数组中注册。

1.4 使用中间件

好了,注册完之后我们来用用吧:

  1. Route::get('/test-middleware',['middleware'=>'test',function(){ 
  2.   return 'HI'
  3. }]); 

当我们输入:http://localhost:8000/test-middleware?id=1 时会在页面上输出HI 当输入 http://localhost:8000/test-middleware?id=0 时会返回首页。

Tags: Laravel5.1 Middleware

分享到: