最新消息: 关于Git&GitHub 版本控制你了解多少?
您现在的位置是:群英 > 开发技术 > PHP语言 >
laravel中间件有几种类型?作用分别是啥?
PHP中文网发表于 2021-08-25 17:35 次浏览

    laravel中间件有几种类型?对于laravel中间件很多新手朋友可能不太了解,其实中间件有三种类型,分别是全局中间件、路由中间件和中间件组,那么这三种类型中间的作用是什么呢?下面我们来具体了解一下。

    第一种,全局中间件/$middleware:

    我们的每一次请求,这里面的每个中间件都会执行。

    第二种,路由中间件/$routeMiddleware:

    定义在该属性内的中间件,只能在定义路由的时候引用。

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

protected $routeMiddleware = [
 ...
 'auth' => IlluminateAuthMiddlewareAuthenticate::class,
];

    如果我们要使用IlluminateAuthMiddlewareAuthenticate::class这个中间件就应该这样来写:

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

    定义路由时候调用middleware方法,参数值是auth, 这样访问这个路由的时候,就会执行该中间件。

    第三种,中间件组/$middlewareGroups:

    看上边的路由中间件,我们可以感觉到这样添加路由中间件是很麻烦的事,如果我们要执行100个中间件,那就要在定义路由时候添加100个。但有了中间件组就不用这么麻烦了!我们来看下中间件组是怎么定义的。

protected $middlewareGroups = [
 'web' => [
 AppHttpMiddlewareEncryptCookies::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中间件的类型及其作用就介绍到这了,希望大家阅读完这篇文章能有所收获,想要了解更多laravel中间件的内容,请关注群英网络其它相关文章。

标签:laravel中间件
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
相关信息推荐