企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
目录 [TOC] HTTP 中间件提供了一个方便的机制来过滤进入应用程序的 HTTP 请求。例如对请求进行身份认证,对请求的数据进行分析筛选。 ## 新建中间件 你可以在 app/Middleware 目录或其子目录中新建中间件,一个中间件的代码实例如下所示: ```php <?php namespace App\Middleware; use WorkerF\Http\MiddlewareInterface; use WorkerF\Http\Requests; // 必须实现 MiddlewareInterface 接口 class AppMiddleware implements MiddlewareInterface { // 实现 MiddlewareInterface 规定的 handle 方法 public function handle(Requests $request) { return $request; } } ``` 中间件必须实现 WorkerF\Http\MiddlewareInterface 接口,实现接口规定的 handle 方法。 ### 中间件通过 如果请求通过验证,则返回请求对象以继续程序执行。 ``` public function handle(Requests $request) { // 验证操作... // 通过验证 return $request; } ``` ### 中间件停止 如果请求未通过验证,返回一个闭包阻止程序继续执行。 ``` public function handle(Requests $request) { // 验证操作... // 验证失败 return function() { return 'Invalid request!'; }; } ``` ### 实例 ```php <?php namespace App\Middleware; use WorkerF\Http\MiddlewareInterface; use WorkerF\Http\Requests; use WorkerF\Http\Route; class AppMiddleware implements MiddlewareInterface { public function handle(Requests $request) { if ($request->age < 18) { // 验证失败,重定向路由到其它页面 return Route::redirect('/notAllow'); // Route::redirect() 方法返回一个闭包 } return $request; } } ``` ## 注册中间件 使用中间件之前需要注册你新建的中间件,你可以在配置文件 config/middleware.php 中注册你的中间件。 ### 全局中间件 全局中间件会在每一个请求中执行。 config/middleware.php 中: ```php // ... 'global' => [ // 在这里注册全局中间件 App\Middleware\AppMiddleware::class, ], // ... ``` 你可以注册多个中间件,它们会按照顺序依次执行。 ### 路由中间件 路由中间件会在访问设置该中间件的路由时执行。 config/middleware.php 中: ```php // ... 'route' => [ 'auth' => App\Middleware\AuthMiddleware::class, 'jwt' => App\Middleware\JwtMiddleware::class, ], // ... ``` 然后在路由中: ```php Route::group(['middleware', => 'auth'], function() { Route::get('user', TestController@user); }); ``` 你可以注册多个路由中间件,它们会按照 Route 分组从外到内依次执行。