浅谈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连接Oracle for NT 远程数据库
Oct 09 PHP
Ext.data.PagingMemoryProxy分页一次性读取数据的实现代码
Apr 07 PHP
php强制下载类型的实现代码
Apr 21 PHP
smarty内置函数capture用法分析
Jan 22 PHP
php基本函数汇总
Jul 09 PHP
又十个超级有用的PHP代码片段
Sep 24 PHP
基于PHP给大家讲解防刷票的一些技巧
Nov 18 PHP
PHP登录(ajax提交数据和后台校验)实例分享
Dec 29 PHP
PHP实现文件下载【实例分享】
Apr 28 PHP
php设计模式之职责链模式定义与用法经典示例
Sep 19 PHP
PHP常用header头定义代码示例汇总
Aug 29 PHP
swoole锁的机制代码实例讲解
Mar 04 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
CI框架整合smarty步骤详解
2016/05/19 PHP
详解php中空字符串和0之间的关系
2016/10/23 PHP
基于PHP实现微信小程序客服消息功能
2019/08/12 PHP
PHP调用QQ互联接口实现QQ登录网站功能示例
2019/10/24 PHP
用JQuery在网页中实现分隔条功能的代码
2012/08/09 Javascript
基于jQuery实现多层次的手风琴效果附源码
2015/09/21 Javascript
PhotoSwipe异步动态加载图片方法
2016/08/25 Javascript
jQuery Validate让普通按钮触发表单验证的方法
2016/12/15 Javascript
Vue 滚动行为的具体使用方法
2017/09/13 Javascript
详解webpack提取第三方库的正确姿势
2017/12/22 Javascript
js推箱子小游戏步骤代码解析
2018/01/10 Javascript
从零开始最小实现react服务器渲染详解
2018/01/26 Javascript
Vue项目自动转换 px 为 rem的实现方法
2018/10/29 Javascript
Node.js 进程平滑离场剖析小结
2019/01/24 Javascript
详解vue 不同环境配置不同的打包命令
2019/04/07 Javascript
使用webpack编译es6代码的方法步骤
2019/04/28 Javascript
Vue实现表格批量审核功能实例代码
2019/05/28 Javascript
解决vue.js中settimeout遇到的问题(时间参数短效果不稳定)
2020/07/21 Javascript
Angular+ionic实现折叠展开效果的示例代码
2020/07/29 Javascript
布同 统计英文单词的个数的python代码
2011/03/13 Python
python paramiko模块学习分享
2017/08/23 Python
使用Python读取大文件的方法
2018/02/11 Python
基于python进行桶排序与基数排序的总结
2018/05/29 Python
解决pycharm下os.system执行命令返回有中文乱码的问题
2019/07/07 Python
如何利用Python开发一个简单的猜数字游戏
2019/09/22 Python
Python3 解决读取中文文件txt编码的问题
2019/12/20 Python
Python实现使用dir获取类的方法列表
2019/12/24 Python
python怎么自定义捕获错误
2020/06/29 Python
div或img图片高度随宽度自适应的方法
2020/02/06 HTML / CSS
服装设计专业自荐书范文
2013/12/30 职场文书
咖啡蛋糕店创业计划书
2014/01/28 职场文书
生物科学专业职业规划书范文
2014/02/11 职场文书
《奇妙的国际互联网》 教学反思
2014/02/25 职场文书
酒店七夕情人节活动策划方案
2014/08/24 职场文书
运动会加油稿20字
2014/11/15 职场文书
52条SQL语句教你性能优化
2021/05/25 MySQL