💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
### 作用: 中间件可以在执行过程中自动运行的部件, ### 运用范围: 中间件主要对http请求进行拦截处理。比如,我们可以在执行控制器方法时自动使用“中间件”完成用户登录验证操作。 在执行控制器方法之前要执行的一些公共的操作,可以使用中间件,如果只是某一个需要可以直接在方法内完成。 ### 基本说明: 中间件类似于自定义标签 1、创建中间件 2、注册中间件 ### 创建中间件 保存于: system/middleware 目录中 <?php namespace system\middleware; class Auth { //执行中间件 public function run () { echo "我执行了"; } } ### 注册中间件 1、配置文件:system/config/middleware.php 2、配置种类:全局中间件、控制器中间件、应用中间件 ### 全局中间件 将中间件的命名空间写入到全局中间件中。在任意地方可自动调用。 'global'=>['system\middleware\App'] App是中间件的类名 ### 控制器中间件 将中间件的命名空间写入到控制器中间件中。 'auth'=>'system\middleware\Test' 注意 : 1、控制器中注册中间件时,要加一个下标:'auth'=>'' 即控制器中间件中的值是二维数组! 在控制器的 __construct 方法或之前执行以下代码都可触发控制器中间件运行。 Middleware::set('auth'); 注意: 1、控制器中间件,是整个控制器的中间件,不是其中任意一个方法的中间件。所以只能是在构造方法中,或者是在构造方法之前才能执行! 2、构造方法之前不太清楚,但至少要放在构造方法中,在实例化对象时被执行! 只允许指定方法运行中间件 Middleware::set('auth', ['only' => ['test']]); 除了某个方法外其他方法执行中间件 Middleware::set('auth', ['except' => ['test']]); 3、可以控制,在执行哪些方法时不执行中间件,也可指定在执行哪些方法时才执行中间件。只是注意参数:第一个参数明显是中间件的下标、第二个参数是当前控制器中的方法名。 ### 应用中间件