Laravel 6 - 第十一章 中间件

文章目录

Laravel 6 - 第一章 简介
Laravel 6 - 第二章 项目搭建
Laravel 6 - 第三章 文件夹结构
Laravel 6 - 第四章 生命周期
Laravel 6 - 第五章 控制反转和依赖注入
Laravel 6 - 第六章 服务容器
Laravel 6 - 第七章 服务提供者
Laravel 6 - 第八章 门面
Laravel 6 - 第九章 契约
Laravel 6 - 第十章 路由
Laravel 6 - 第十一章 中间件
Laravel 6 - 第十二章 控制器
Laravel 6 - 第十三章 请求
Laravel 6 - 第十四章 响应
Laravel 6 - 第十五章 验证器
Laravel 6 - 第十六章 Artisan命令
Laravel 6 - 第十七章 配置数据库
Laravel 6 - 第十八章 模型


目录


一、中间件(middleware)

中间件(Middleware)提供了一种机制,用于过滤进入应用程序的 HTTP 请求,可以执行一些常见的任务,如:身份验证、日志记录、CORS(跨源资源共享)处理等。

二、使用步骤

1.创建中间件

使用 artisan cli 创建一个新的中间件(CheckUsernameMiddleware),如下:

shell 复制代码
$ php artisan make:middleware CheckUsernameMiddleware

如上命令会在 app/Http/Middleware 下新建 中间件(CheckUsernameMiddleware)类。

2.编写中间件

1中例子,在 中间件(CheckUsernameMiddleware)handle 方法中编写处理逻辑,如下:

如上,前置逻辑是在应用处理请求之前执行,后置逻辑是在应用处理请求之后执行。

3.注册中间件

1中的例子,打开 app/Http/Kernel.php 文件,找到 $routeMiddleware 数组,将中间件别名(checkUsername)映射到 CheckUsernameMiddleware。如下:

4.使用中间件

1、路由中间件

3中例子,在路由文件(如:routes/api.php)添加如下内容:

表示只会在 /show 上运行中间件(CheckUsernameMiddleware),其他同理,使用方法可参考Laravel 6 - 第十章 路由路由组的例子。

2、全局中间件

1中例子,在 app/Http/Kernel.php 文件中找到 $middleware 数组并添加中间件(CheckUsernameMiddleware),如下:

表示在应用程序的所有请求中都会运行中间件(CheckUsernameMiddleware),且无需在路由文件(如:routes/api.php)指定。

5.中间件组

以项目默认中间件组为例,如果想把多个中间件打包成一个组,从而方便使用,则可在app/Http/Kernel.php 文件中的 $middlewareGroups 数组中添加如下内容:

在路由中使用,如下:

6.排序

以项目默认中间件组为例,如果想让中间件以特定的顺序执行,则可在app/Http/Kernel.php 文件中的 $middlewarePriority 数组中添加如下内容:

如上会将强制非全局中间件始终保持给定的顺序。


三、总结

使用中间件可以轻松地过滤、修改进入应用程序的请求。

相关推荐
HaiLang_IT1 小时前
网络安全与执法专业【精选选题表】优质选题参考
安全·web安全·php
CTO Plus技术服务中3 小时前
大数据、开发环境、中间件、数据库运维开发教程
大数据·数据库·中间件
4311媒体网3 小时前
Libvio.link 页面布局与数据分布
java·php
小宇的天下4 小时前
Cadence allegro---assign net
服务器·php·apache
JaguarJack4 小时前
PHP 现在可以零成本构建原生 iOS 和 Android 应用 NativePHP for Mobile v3 发布
后端·php·laravel·服务端
m0_748233174 小时前
Laravel+Vue:全栈开发终极指南
vue.js·php·laravel
IT·小灰灰15 小时前
30行PHP,利用硅基流动API,网页客服瞬间上线
开发语言·人工智能·aigc·php
快点好好学习吧15 小时前
phpize 依赖 php-config 获取 PHP 信息的庖丁解牛
android·开发语言·php
秦老师Q15 小时前
php入门教程(超详细,一篇就够了!!!)
开发语言·mysql·php·db
是誰萆微了承諾15 小时前
php 对接deepseek
android·开发语言·php