浅谈Laravel中的三种中间件的作用
发布:smiling 来源: PHP粉丝网 添加日期:2022-01-02 12:37:05 浏览: 评论:0
今天小编就为大家分享一篇浅谈Laravel中的三种中间件的作用,具有很好的参考价值,希望对大家有所帮助,一起跟随小编过来看看吧。
在之前一直简单的认为中间件就是往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/路由中间件,有些个别的请求,我们需要执行特别的中间件时,就适合定义在这属性里面。**
Tags: Laravel中间件
相关文章
- ·Laravel框架基于中间件实现禁止未登录用户访问页面功能示例(2021-11-04)
- ·Laravel 6 将新增为指定队列任务设置中间件的功能(2021-12-09)
- ·laravel利用中间件防止未登录用户直接访问后台的方法(2021-12-25)
- ·Laravel获取当前请求的控制器和方法以及中间件的例子(2022-01-01)
- ·laravel在中间件内生成参数并且传递到控制器中的2种姿势(2022-01-04)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)