$middleware 属性:

这个属性称为全局中间件,为什么说是全局中间件呢?因为你的每一次请求,这里面的每个中间件都会执行。

$routeMiddleware 属性:

这个属性称为路由中间件,为什么说是路由中间件呢?因为定义在该属性内的中间件,只能在定义路由时候引用。

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

protected $routeMiddleware = [
...
'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
];
  • 1
  • 2
  • 3
  • 4

如果我们要使用 \Illuminate\Auth\Middleware\Authenticate::class 这个中间件该怎么做呢?

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

我们定义路由时候调用了 middleware 方法,参数值是 auth, 这样访问这个路由的时候,就会执行该中间件。明白了吧!很简单的。

$middlewareGroups 属性:

这个属性称为中间件组,为什么说是中间件组呢?我们之前说了路由中间件,是不是感觉这样添加路由中间件很麻烦,比如我们执行 10 个中间件,是不是就要在定义路由时候添加 10 个呢?有了中间件组就不用这么麻烦了。我们来看下中间件组是怎么定义的。

protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
...
],
'api' => [
...
],
];
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

好了,上面的例子就是定义中间件组的格式,比如我们看 web 这个键值,它对应为一个数组,该数组有多个中间件组成。当我们定义好后,该怎么使用呢?
我们在声明路由的时候,这样调用就可以了。

Route::group(['middleware' => 'web'],function($route){
$route->get('hello/world',function(){});
$route->get('hello/php',function(){});
// 这样在访问这个这些路由的时候,就会执行中间件组 web 所对应的中间件,方便多了,批量式的。
});
  • 1
  • 2
  • 3
  • 4
  • 5

总结:

$middleware:全局中间件,要对所有的请求要做一些处理的时候,就适合定义在该属性内。(比如统计请求次数这些)
$middlewareGroups:中间件组,比如我们项目有 api 请求和 web 的请求的时候,就要把两种类型的请求中间件分离开来,这时候就需要我们中间件组啦。
$routeMiddleware:路由中间件,有些个别的请求,我们需要执行特别的中间件时,就适合定义在这属性里面。

 转自:https://blog.csdn.net/Quiet_tomcat/article/details/91127527

最新文章

  1. RabbitMQ操作
  2. Java提高篇(二七)-----TreeMap
  3. css3d总结
  4. Fiddler-006-修改HTTP请求参数
  5. Python 描述符(descriptor) 杂记
  6. winForm 程序开发界面参数传递
  7. 2. shell之shell配置文件
  8. HPU周赛题目解析
  9. sql视图
  10. Java使用递归找出某目录下的所有子目录以及子文件
  11. Leetcode题解(27)
  12. 流式处理新秀Flink原理与实践
  13. JDBC学习(含转载)
  14. keepalive实现MGR的自动切换(二)
  15. Python全栈开发记录_第二篇(文件操作及三级菜单栏增删改查)
  16. codeblocks技巧收集
  17. Javascript中怎样获取统一管理的Java提示语
  18. Windows IOT 开发入门(准备工作)
  19. Java Quartz用法
  20. 性能测试-Loadrunner组件Controller一

热门文章

  1. windows游戏编程鼠标
  2. 3-自定义构造方法和description方法
  3. java试题复盘——11月25日
  4. Elasticsearch的Search详解
  5. 安装APK时报错:Failure [INSTALL_FAILED_TEST_ONLY: installPackageLI]
  6. 一步一步学习FastJson1.2.47远程命令执行漏洞
  7. spaCy 第二篇:语言模型
  8. Mybatis generator配置
  9. Qt编写安防视频监控系统5-视频回放
  10. 用VLC读取摄像头产生RTSP流,DSS主动取流转发(一)