thinkphp8之中间件

一.命令行创建中间件

命令:php think make:middleware Check

图片

二.查看中间件的代码

图片

图片

三.代码解析

declare (strict_types = 1);定义严格模式的中间件开启

namespace app\middleware;定义的命名空间

Check 中间件的类名

Handle 方法,对请求进行过滤的方法

四.查看$request是什么?

图片

是一个参数对象

图片

五.中间件启用的配置

1)、再config下的middleware.php下的配置

图片

2)、再app目录下的middleware.php的配置

图片

六.全局中间件的案例,有name参数就跳转到hello方法中(满足没登录跳转到登录页面)

if($request->param('name')){

return redirect('/index/index/hello');

}

return $next($request);

七.应用中间件

把app下的全局middleware.php复制一份放到应用下(例如app/index下)然后把app下middleware.php的配置去掉

八.路由中间件,以下文件写入如下代码

图片

Route::rule('hello/:name','hello')

->middleware(\app\middleware\Check::class);

Route::get('hello/:name/[:year]', 'index/hello');

访问:hello/111 跳转到index/index/hello

九.控制器中间件

protected $middleware = [\app\middleware\Check::class];

图片

ThinkPHP8 中间件是一种用于处理HTTP请求前后执行的一些任务的机制。它可以增强应用的安全性和功能,例如日志记录、用户认证、缓存控制等。 ### ThinkPHP8 控制器中间件简介 #### 定义 控制器中间件是应用于控制器之前的一组函数,它们能够对控制器的操作提供额外的功能。它允许开发者在所有请求到达特定控制器及其对应的操作前运行一组自定义逻辑。这有助于在执行控制器业务逻辑之前完成一些通用的任务,比如检查用户权限、设置响应头、验证输入数据等。 #### 示例配置 在一个典型的ThinkPHP8项目中,你可以通过以下方式启用控制器中间件: ```php // 配置文件中添加中间件配置 return [ 'middleware' => [ // 具体的中间件列表 'yourMiddlewareClassName' => [ // 中间件处理顺序,默认从上到下依次执行 'before' => ['action', 'view'], // 可选的错误处理函数 'onException' => '\think\ExceptionHandler' ], ], ]; ``` 在这里,`'yourMiddlewareClassName'` 应替换为你实际创建的中间件类名。`'action'` 和 `'view'` 表示分别在控制器方法执行前后执行该中间件。 #### 使用场景举例 1. **日志记录**:可以在每个控制器动作之前加入日志记录中间件,记录用户的访问信息及操作详情。 2. **权限验证**:可以添加一个中间件来检查用户是否拥有访问当前控制器或其操作所需的权限。 3. **跨域资源共享(CORS)控制**:用于处理跨域请求,如设置合适的 `Access-Control-Allow-Origin`, `Access-Control-Allow-Methods` 等 HTTP 标头。 4. **性能监控**:在某些中间件中添加代码来监测每个请求的时间消耗,帮助分析和优化应用性能。 #### 实现步骤 1. 创建中间件类:继承 `\think\middleware\BaseMiddleware` 并实现其方法,如 `handle()` 来放置你需要执行的逻辑。 2. 注册中间件:将创建的中间件类实例注册到应用配置中,并指定其执行顺序。 3. 应用中间件:在需要使用特定中间件的控制器中引用并应用它。 通过合理利用控制器中间件,可以显著提升应用程序的管理和维护效率,同时增加应用的健壮性和安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值