浅谈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代码
Dec 06 PHP
PHP之变量、常量学习笔记
Mar 27 PHP
PHP daddslashes 使用方法介绍
Oct 26 PHP
基于PHP CURL获取邮箱地址的详解
Jun 03 PHP
PHP5常用函数列表(分享)
Jun 07 PHP
PHP eval函数使用介绍
Dec 08 PHP
PHP脚本自动识别验证码查询汽车违章
Dec 20 PHP
phpinfo()中Loaded Configuration File(none)的解决方法
Jan 16 PHP
通过php动态传数据到highcharts
Apr 05 PHP
原生JS实现Ajax通过GET方式与PHP进行交互操作示例
May 12 PHP
php使用array_chunk函数将一个数组分割成多个数组
Dec 05 PHP
什么是PHP7中的孤儿进程与僵尸进程
Apr 14 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
thinkphp特殊标签用法概述
2014/11/24 PHP
php中实现用数组妩媚地生成要执行的sql语句
2015/07/10 PHP
php实现的一段简单概率相关代码
2016/05/30 PHP
PHP中set_include_path()函数相关用法分析
2016/07/18 PHP
PHP Callable强制指定回调类型的方法
2016/08/30 PHP
用php定义一个数组最简单的方法
2019/10/04 PHP
PHP生成随机密码4种方法及性能对比
2020/12/11 PHP
用JavaScript和注册表脚本实现右键收藏Web页选中文本
2007/01/28 Javascript
jquery 实现密码框的显示与隐藏示例代码
2013/09/18 Javascript
浅析javascript中函数声明和函数表达式的区别
2015/02/15 Javascript
js实现a标签超链接提交form表单的方法
2015/06/24 Javascript
谈谈我对JavaScript DOM事件的理解
2015/12/18 Javascript
js检测离开或刷新页面时表单数据是否更改的方法
2016/08/02 Javascript
ionic实现滑动的三种方式
2016/08/27 Javascript
jQuery EasyUI tree 使用拖拽时遇到的错误小结
2016/10/10 Javascript
JS 实现可停顿的垂直滚动实例代码
2016/11/23 Javascript
详解Node项目部署到云服务器上
2017/07/12 Javascript
jquery.rotate.js实现可选抽奖次数和中奖内容的转盘抽奖代码
2017/08/23 jQuery
微信小程序开发之自定义tabBar的实现
2018/09/06 Javascript
利用Python读取txt文档的方法讲解
2018/06/23 Python
python实现给scatter设置颜色渐变条colorbar的方法
2018/12/13 Python
Python函数装饰器实现方法详解
2018/12/22 Python
浅谈Python批处理文件夹中的txt文件
2019/03/11 Python
python实现QQ批量登录功能
2019/06/19 Python
python实现银行实战系统
2020/02/26 Python
Python如何获取文件路径/目录
2020/09/22 Python
德国童装购物网站:NICKI´S.com
2018/04/20 全球购物
Boden英国官网:英国知名原创时装品牌
2018/11/06 全球购物
日本最大的购物网站乐天市场国际版:Rakuten Global Market(支持中文)
2020/02/03 全球购物
空字符串(“”)和null的区别
2012/11/13 面试题
linux面试相关问题
2013/04/28 面试题
法学专业自我鉴定
2014/02/05 职场文书
普通话宣传标语
2014/06/26 职场文书
国家奖学金获奖感言
2014/08/16 职场文书
预备党员期盼十八届四中全会召开思想汇报
2014/10/17 职场文书
亲戚关系证明
2015/06/24 职场文书