浅谈Laravel中的三种中间件的作用


Posted in PHP onOctober 13, 2019

在之前一直简单的认为中间件就是往middleware里添加中间件即可。现在才知道中间件有三种类型,分别为:$middleware $middlewareGroup $routeMiddleware 通过查阅资料,终于明白了这三种类型的作用和不同。

第一种,全局中间件/$middleware:

我们的每一次请求,这里面的每个中间件都会执行。

第二种,路由中间件/$routeMiddleware:

定义在该属性内的中间件,只能在定义路由的时候引用。

假设这是我们定义的路由中间件:

protected $routeMiddleware = [
 ...
 'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
];

如果我们要使用\Illuminate\Auth\Middleware\Authenticate::class这个中间件就应该这样来写:

Route::get('hello/laravel-china','XXController@index')->middleware('auth');

定义路由时候调用middleware方法,参数值是auth, 这样访问这个路由的时候,就会执行该中间件。

第三种,中间件组/$middlewareGroups:

看上边的路由中间件,我们可以感觉到这样添加路由中间件是很麻烦的事,如果我们要执行100个中间件,那就要在定义路由时候添加100个。但有了中间件组就不用这么麻烦了!我们来看下中间件组是怎么定义的。

protected $middlewareGroups = [
 'web' => [
 \App\Http\Middleware\EncryptCookies::class,
 ...
 ],
 'api' => [
 ...
 ],
];

上面的例子就是定义中间件组的格式,比如 web这个键值,它对应为一个数组,该数组有多个中间件组成。

需要声明路由的时候,如下调用就可以了。

Route::group(['middleware' => 'web'],function($route){
 $route->get('hello/world',function(){});
 $route->get('hello/php',function(){});
 // 这样在访问这个这些路由的时候,就会执行中间件组 web 所对应的中间件!
});

**总结:

$middleware/全局中间件,要对所有的请求要做一些处理的时候,就适合定义在该属性内。(比如统计请求次数这些)

$middlewareGroups/中间件组,比如我们项目有api请求和web的请求的时候,就要把两种类型的请求中间件分离开来,这时候就需要我们中间件组啦。

$routeMiddleware/路由中间件,有些个别的请求,我们需要执行特别的中间件时,就适合定义在这属性里面。**

以上这篇浅谈Laravel中的三种中间件的作用就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
PHP字符串处理的10个简单方法
Jun 30 PHP
PHP实现今天是星期几的几种写法
Sep 26 PHP
div li的多行多列 无刷新分页示例代码
Oct 16 PHP
php中执行系统命令的方法
Mar 21 PHP
Yii2.0高级框架数据库增删改查的一些操作
Nov 16 PHP
解析WordPress中的post_class与get_post_class函数
Jan 04 PHP
linux下为php添加iconv模块的方法
Feb 28 PHP
PHP中addslashes与mysql_escape_string的区别分析
Apr 25 PHP
PHP实现递归目录的5种方法
Oct 27 PHP
thinkphp查询,3.X 5.0方法(亲试可行)
Jun 17 PHP
PHP实现生成模糊图片的方法示例
Dec 21 PHP
php实现数组重复数字统计实例
Sep 30 PHP
laravel config文件配置全局变量的例子
Oct 13 #PHP
Laravel 读取 config 下的数据方法
Oct 13 #PHP
laravel实现前后台路由分离的方法
Oct 13 #PHP
Laravel数据库读写分离配置的方法
Oct 13 #PHP
Laravel第三方包报class not found的解决方法
Oct 13 #PHP
php7性能提升的原因详解
Oct 13 #PHP
php抽象方法和普通方法的区别点总结
Oct 13 #PHP
You might like
Zend Studio for Eclipse的java.lang.NullPointerException错误的解决方法
2008/12/06 PHP
一步一步学习PHP(2)――PHP类型
2010/02/15 PHP
php下正则来匹配dede模板标签的代码
2010/08/21 PHP
PHP中ini_set与ini_get用法实例
2014/11/04 PHP
laravel通用化的CURD的实现
2019/12/13 PHP
IE图片缓存document.execCommand("BackgroundImageCache",false,true)
2011/03/01 Javascript
解决jquery插件冲突的问题
2014/01/23 Javascript
javascript实现根据身份证号读取相关信息
2014/12/17 Javascript
jQuery的animate函数实现图文切换动画效果
2015/05/03 Javascript
jQuery+PHP实现可编辑表格字段内容并实时保存
2015/10/09 Javascript
JS实现队列与堆栈的方法
2016/04/21 Javascript
微信小程序上滑加载下拉刷新(onscrollLower)分批加载数据(二)
2017/05/11 Javascript
Avalonjs双向数据绑定与监听的实例代码
2017/06/23 Javascript
H5+C3+JS实现五子棋游戏(AI篇)
2020/05/28 Javascript
解决VUE双向绑定失效的问题
2019/10/29 Javascript
node koa2 ssr项目搭建的方法步骤
2020/12/11 Javascript
多种类型jQuery网页验证码插件代码实例
2021/01/09 jQuery
Python实现批量修改文件名实例
2015/07/08 Python
Python实现嵌套列表及字典并按某一元素去重复功能示例
2017/11/30 Python
pybind11和numpy进行交互的方法
2019/07/04 Python
Pandas时间序列重采样(resample)方法中closed、label的作用详解
2019/12/10 Python
Python利用PyPDF2库获取PDF文件总页码实例
2020/04/03 Python
jupyter notebook 多行输出实例
2020/04/09 Python
CSS3动画效果回调处理详解
2014/12/10 HTML / CSS
美国乡村商店:Plow & Hearth
2016/09/12 全球购物
Omio葡萄牙:全欧洲低价大巴、火车和航班搜索和比价
2019/02/09 全球购物
Pamela Love官网:纽约设计师Pamela Love的精美、时尚和穿孔珠宝
2020/10/19 全球购物
怎样有效的进行自我评价
2013/10/06 职场文书
上课玩手机检讨书
2014/02/08 职场文书
大学军训感言300字
2014/03/09 职场文书
临床医学专业求职信
2014/08/08 职场文书
党员群众路线对照检查材料
2014/08/31 职场文书
2014年公务员个人工作总结
2014/11/22 职场文书
行政诉讼答辩状
2015/05/21 职场文书
小学作文指导之如何写人?
2019/07/08 职场文书
年终奖金发放管理制度,中小企业适用,拿去救急吧!
2019/07/12 职场文书