浅谈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下使用无限生命期Session的方法
Mar 16 PHP
php SQL Injection with MySQL
Feb 27 PHP
深入Memcache的Session数据的多服务器共享详解
Jun 13 PHP
php常用ODBC函数集(详细)
Jun 24 PHP
基于递归实现的php树形菜单代码
Nov 19 PHP
php筛选不存在的图片资源
Apr 28 PHP
PHP接收json 并将接收数据插入数据库的实现代码
Dec 01 PHP
CodeIgniter连贯操作的底层原理分析
May 17 PHP
yii2 resetful 授权验证详解
May 18 PHP
yii2.0整合阿里云oss的示例代码
Sep 19 PHP
Laravel中批量赋值Mass-Assignment的真正含义详解
Sep 29 PHP
微信公众平台开发教程①获取用户Openid及个人信息图文详解
Apr 10 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
PHP中的正规表达式(二)
2006/10/09 PHP
PHP的Yii框架的基本使用示例
2015/08/21 PHP
PHP查找一列有序数组是否包含某值的方法
2020/02/07 PHP
Javascript下的keyCode键码值表
2007/04/10 Javascript
JavaScript通过RegExp实现客户端验证处理程序
2013/05/07 Javascript
javascript获取下拉列表框当中的文本值示例代码
2013/07/31 Javascript
jquery easyui combobox模糊过滤(示例代码)
2013/11/30 Javascript
jquery操作对象数组元素方法详解
2014/11/26 Javascript
js实现鼠标悬浮给图片加边框的方法
2015/01/30 Javascript
javascript中 try catch用法
2015/08/16 Javascript
jQuery获取table行数并输出单元格内容的实现方法
2016/06/30 Javascript
浅谈jQuery中事情的动态绑定
2017/02/12 Javascript
详解React-Native解决键盘遮挡问题(Keyboard遮挡问题)
2017/07/13 Javascript
浅谈webpack 自动刷新与解析
2018/04/09 Javascript
js中的 || 与 && 运算符详解
2018/05/24 Javascript
vue移动端弹框组件的实例
2018/09/25 Javascript
从理论角度讨论JavaScript闭包
2019/04/03 Javascript
使用pkg打包ThinkJS项目的方法步骤
2019/12/30 Javascript
如何通过javaScript去除字符串两端的空白字符
2020/02/06 Javascript
[01:38]DOTA2 2015国际邀请赛中国区预选赛 Showopen
2015/06/01 DOTA
python读取注册表中值的方法
2013/04/08 Python
进一步理解Python中的函数编程
2015/04/13 Python
Python中有趣在__call__函数
2015/06/21 Python
Python的Django应用程序解决AJAX跨域访问问题的方法
2016/05/31 Python
python中requests爬去网页内容出现乱码问题解决方法介绍
2017/10/25 Python
python正向最大匹配分词和逆向最大匹配分词的实例
2018/11/14 Python
使用python PIL库实现简单验证码的去噪方法步骤
2019/05/10 Python
由面试题加深对Django的认识理解
2019/07/19 Python
Python 实用技巧之利用Shell通配符做字符串匹配
2019/08/23 Python
Betsey Johnson官网:妖娆可爱的连衣裙及鞋子、手袋和配件
2016/12/30 全球购物
澳大利亚制造的羊皮靴:Original UGG Boots
2017/11/13 全球购物
旷课检讨书2000字
2014/01/14 职场文书
员工评语大全
2014/01/19 职场文书
房屋转让协议书
2014/04/11 职场文书
出差报告格式模板
2014/11/06 职场文书
跟班学习心得体会(共6篇)
2016/01/23 职场文书