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


Posted in PHP onJanuary 04, 2020

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

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

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

为什么要使用中间件?

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

1 使用中间件

1.1 创建中间件

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

php artisan make:middleware TestMiddleware

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

1.2 解读中间件

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

class TestMiddleware
{
  /**
   * Handle an incoming request.
   *
   * @param \Illuminate\Http\Request $request
   * @param \Closure $next
   * @return mixed
   */
  public function handle($request, Closure $next)
  {
    return $next($request);
  }
}

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

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

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

1.3 编写中间件

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

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

/**
   * The application's global HTTP middleware stack.
   *
   * @var array
   */
  protected $middleware = [
    \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
    \App\Http\Middleware\EncryptCookies::class,
    \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
    \Illuminate\Session\Middleware\StartSession::class,
    \Illuminate\View\Middleware\ShareErrorsFromSession::class,
    \App\Http\Middleware\VerifyCsrfToken::class,
  ];
  /**
   * The application's route middleware.
   *
   * @var array
   */
  protected $routeMiddleware = [
    'auth' => \App\Http\Middleware\Authenticate::class,
    'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
    'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
    // 把我们创建的middleware注册到这里
    'test' => \App\Http\Middleware\TestMiddleware::class,
  ];

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

1.4 使用中间件

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

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

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

希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。

PHP 相关文章推荐
php 操作excel文件的方法小结
Dec 31 PHP
PHP Memcached应用实现代码
Feb 08 PHP
PHP CURL模拟GET及POST函数代码
Apr 25 PHP
PHP 解决session死锁的方法
Jun 20 PHP
使用php语句将数据库*.sql文件导入数据库
May 05 PHP
PHP文件锁函数flock()详细介绍
Nov 18 PHP
PHP实现远程下载文件到本地
May 17 PHP
WordPress中Gravatar头像缓存到本地及相关优化的技巧
Dec 19 PHP
PHP转换文本框内容为HTML格式的方法
Jul 20 PHP
详解PHP中array_rand函数的使用方法
Sep 11 PHP
PHP中使用OpenSSL生成证书及加密解密
Feb 05 PHP
php 猴子摘桃的算法
Jun 20 PHP
Laravel 5.1 框架Blade模板引擎用法实例分析
Jan 04 #PHP
Laravel5.1 框架控制器基础用法实例分析
Jan 04 #PHP
Laravel5.1框架路由分组用法实例分析
Jan 04 #PHP
Laravel5.1 框架路由基础详解
Jan 04 #PHP
PHP配合fiddler抓包抓取微信指数小程序数据的实现方法分析
Jan 02 #PHP
PHP+MySQL实现在线测试答题实例
Jan 02 #PHP
PHP CURL实现模拟登陆并上传文件操作示例
Jan 02 #PHP
You might like
基于swoole实现多人聊天室
2018/06/14 PHP
javascript showModalDialog,open取得父窗口的方法
2010/03/10 Javascript
jQuery源码解读之addClass()方法分析
2015/02/20 Javascript
AngularJS中的过滤器filter用法完全解析
2016/04/22 Javascript
JavaScript中的对象和原型(一)
2016/08/12 Javascript
利用JS做网页特效_大图轮播(实例讲解)
2017/08/09 Javascript
JavaScript中变量、指针和引用功能与操作示例
2018/08/04 Javascript
js canvas实现5张图片合成一张图片
2019/07/15 Javascript
js实现文字头像的生成代码
2020/03/07 Javascript
VUE table表格动态添加一列数据,新增的这些数据不可以编辑(v-model绑定的数据不能实时更新)
2020/04/03 Javascript
深入浅析vue全局环境变量和模式
2020/04/28 Javascript
基于vue--key值的特殊用处详解
2020/07/31 Javascript
JavaScript经典案例之简易计算器
2020/08/24 Javascript
js制作提示框插件
2020/12/24 Javascript
python通过pil模块将raw图片转换成png图片的方法
2015/03/16 Python
python将文本中的空格替换为换行的方法
2018/03/19 Python
django url到views参数传递的实例
2019/07/19 Python
使用python代码进行身份证号校验的实现示例
2019/11/21 Python
解决c++调用python中文乱码问题
2020/07/29 Python
利用python进行文件操作
2020/12/04 Python
html5 touch事件实现页面上下滑动效果【附代码】
2016/03/10 HTML / CSS
HTML5 Canvas概述
2009/08/26 HTML / CSS
法国在线药房:1001Pharmacies
2021/03/07 全球购物
董事长秘书职责
2014/01/31 职场文书
《鸟的天堂》教学反思
2014/02/27 职场文书
基层党组织公开承诺书
2014/03/28 职场文书
仓库文员岗位职责
2014/04/06 职场文书
大学新生军训方案
2014/05/03 职场文书
大学国际贸易专业自荐信
2014/06/05 职场文书
人事经理岗位职责范本
2014/08/04 职场文书
副乡长群众路线教育实践活动个人对照检查材料
2014/09/19 职场文书
2014年大学生党员自我评议
2014/09/22 职场文书
业务员辞职信范文
2015/03/02 职场文书
2015年秋季新学期寄语
2015/03/25 职场文书
2015年电厂工作总结范文
2015/05/13 职场文书
MySQL COUNT函数的使用与优化
2021/05/10 MySQL