首页
关于
Search
1
跨域设置-开发过程中直接服务器开发
21 阅读
2
小程序反编译
16 阅读
3
笔记
11 阅读
4
微信支付设置
11 阅读
5
小程序开发从0到上线,10个步骤!!
10 阅读
微信生态
云开发
服务器开发
微信支付
服务器
部署文档
默认分类
登录
Search
标签搜索
thinkphp
小程序前端
php
皮卡云
累计撰写
14
篇文章
累计收到
0
条评论
首页
栏目
微信生态
云开发
服务器开发
微信支付
服务器
部署文档
默认分类
页面
关于
搜索到
2
篇与
的结果
2025-06-21
ThinkPHP 8 中间件详解
ThinkPHP 8 的中间件机制提供了一种强大的方式来过滤进入应用的 HTTP 请求,允许你在请求到达控制器之前或响应发送到客户端之后执行特定的逻辑。中间件基本概念中间件是一种在请求处理管道中执行的机制,可以:在请求到达控制器前进行预处理在响应发送到客户端前进行后处理终止请求并直接返回响应创建中间件可以通过命令行生成中间件:php think make:middleware CheckAuth这会生成 app/middleware/CheckAuth.php 文件:<?php declare (strict_types = 1); namespace app\middleware; class CheckAuth { public function handle($request, \Closure $next) { // 前置中间件逻辑 $response = $next($request); // 调用下一个中间件/控制器 // 后置中间件逻辑 return $response; } }中间件注册全局中间件在 app/middleware.php 文件中注册:return [ \app\middleware\CheckAuth::class, // 其他全局中间件... ];路由中间件在路由定义中使用:Route::rule('user/profile', 'user/profile') ->middleware(\app\middleware\AuthCheck::class);控制器中间件在控制器中定义:protected $middleware = [ \app\middleware\AuthCheck::class => ['except' => ['login']], \app\middleware\LogOperation::class => ['only' => ['update', 'delete']], ];中间件<?php declare( strict_types = 1 ); namespace app\middleware; use think\facade\Db; use think\Response; use think\facade\Request; class CheckAuth { /** * 处理请求 * * @param \think\Request $request * @param \Closure $next * @return Response */ public function handle( $request, \Closure $next ): Response { // 获取所有输入数据 $UID = $request->param( 'UID' ); if ( !$UID ) { return Response::create( [ 'code' => 500, 'msg' => '请传入用户ID!' ], 'json' ); } $user = Db::table( 'user' )->where( 'id', $UID )->findOrEmpty(); if ( empty( $user ) ) { return Response::create( [ 'code' => 101, 'msg' => '用户不存在' ], 'json' ); } // 将用户数据附加到请求对象中,供后续控制器使用 $request->user = $user; // 继续处理请求 return $next( $request ); } }使用控制器<?php //APP 调用接口 namespace app\controller; use think\facade\Db; use app\BaseController; use app\middleware\CheckAuth; class App extends BaseController { //控制器引用 不验证登录模块 Login protected $middleware = [ CheckAuth::class => [ 'except' => [ 'Login' ] ] ]; //获取控制器的用户信息 //$user = request()->user; public function Login() { $result = [ 'id'=>1 ]; return json( [ 'code' => !empty( $result ) ? 0 : 1, 'msg' => !empty( $result ) ? '登录成功' : '登录失败', 'data'=>$result ] ); } }
2025年06月21日
1 阅读
0 评论
0 点赞
2025-05-25
thinkphp 部署指南
thinkphp
2025年05月25日
2 阅读
0 评论
0 点赞