thinkphp6项目初始化配置方案二次修正版本

news/2025/6/21 15:43:26/

数据返回统一格式

app/BaseController.php新增文件内容在末尾,并在构造函数中实例化数据模型类

// 成功统一返回格式
function Result($data, $msg = '', $code = 200, $httpCode = 200): \think\response\Json
{$res = ['code' => $code,'msg'  => $msg,'data' => $data];return json($res, $httpCode);
}// 成功返回,无数据格式
function ResultOK($msg = 'ok', $code = 200, $httpCode = 200): \think\response\Json
{$res = ['code' => $code,'msg'  => $msg,'data' => null];return json($res, $httpCode);
}// 失败返回
function ResultError($msg = "error", $code = 400, $httpCode = 200): \think\response\Json
{$res = ['code' => $code,'msg'  => $msg,'data' => null];return json($res, $httpCode);
}

在config目录新建redis.php

<?php
return [//激活Token"active_pre" => "active_account_pre_",//登录Token"token_pre" => "access_token_pre_",//登录Token过期时间"login_expire" => 24 * 3600,//重置密码Token"reset_pre" => "reset_password_pre_",//登录验证码"code_pre" => "login_pre_",//登录验证码过期时间"code_expire" => 120,//登录验证码错误次数"code_error" => 3,//文件数据过期时间"file_expire" => 3600 / 4,
];

修改全局报错返回数据样式app/ExceptionHandle.php

<?php
namespace app;use think\db\exception\DataNotFoundException;
use think\db\exception\ModelNotFoundException;
use think\exception\Handle;
use think\exception\HttpException;
use think\exception\HttpResponseException;
use think\exception\ValidateException;
use think\Response;
use Throwable;/*** 应用异常处理类*/
class ExceptionHandle extends Handle
{/*** 不需要记录信息(日志)的异常类列表* @var array*/protected $ignoreReport = [HttpException::class,HttpResponseException::class,ModelNotFoundException::class,DataNotFoundException::class,ValidateException::class,];/*** 记录异常信息(包括日志或者其它方式记录)** @access public* @param  Throwable $exception* @return void*/public function report(Throwable $exception): void{// 使用内置的方式记录异常日志parent::report($exception);}/*** Render an exception into an HTTP response.** @access public* @param \think\Request $request* @param Throwable $e* @return Response*/public function render(\think\Request $request, Throwable $e): Response{// 自定义异常处理机制$response = ['code' => 500,'msg'  => $e->getMessage(),'data' => null,];return json($response);}
}

修改缓存配置config/cache.php

<?php// +----------------------------------------------------------------------
// | 缓存设置
// +----------------------------------------------------------------------return [// 默认缓存驱动'default' => 'redis',// 缓存连接方式配置'stores'  => ['file' => [// 驱动方式'type'       => 'File',// 缓存保存目录'path'       => '',// 缓存前缀'prefix'     => '',// 缓存有效期 0表示永久缓存'expire'     => 0,// 缓存标签前缀'tag_prefix' => 'tag:',// 序列化机制 例如 ['serialize', 'unserialize']'serialize'  => [],],// 更多的缓存连接'redis'=>[// 驱动方式'type'       => 'redis',// 服务器地址'host'       => '****',// 服务器端口'port'       => 6379,// 密码'password'   => '',// 缓存有效期 0表示永久缓存'expire'     => 0]],
];

给用户颁发jwt鉴权证书

安装 firebase/php-jwt:

composer require firebase/php-jwt

创建自定义中间件 Auth:

前置中间件

<?php
namespace app\middleware;use think\Middleware;
use Firebase\JWT\JWT;
use Firebase\JWT\Key;
use think\facade\Db;
use think\facade\Config;
use think\Request;
use think\Response;class Auth extends Middleware
{public function handle(Request $request, \Closure $next){// 从请求头获取JWT$token = $request->header('Authorization');if (!$token) {return json(['code' => 401, 'msg' => '未提供Token', 'data' => null], 401);}try {// 解析JWT$decoded = JWT::decode($token, new Key(Config::get('app.jwt_secret'), 'HS256'));$userId = $decoded->uid;// 查询用户信息$user = Db::table('staff')->where('id', $userId)->where('status', 1)->find();if (!$user) {return json(['code' => 403, 'msg' => '账户异常', 'data' => null], 403);}// 将用户信息传递给控制器$request->user = $user;} catch (\Exception $e) {return json(['code' => 401, 'msg' => '账号或密码错误', 'data' => null], 401);}return $next($request);}
}

http://www.ppmy.cn/news/1503812.html

相关文章

【前端面试】八、工程化

目录 1.webpack 2 vite 3 gulp 1.webpack 基本知识&#xff1a; 定义&#xff1a;webpack是一个现代JavaScript应用程序的静态模块打包器(module bundler)。当webpack处理应用程序时&#xff0c;它会在内部构建一个依赖图(dependency graph)&#xff0c;该图会映射项目所需…

dbm和w的换算公式

光纤模块的功率转换 此工具用于转换功率计量单位分贝毫瓦 (dBmW) 和瓦特 (W)。 https://www.digikey.cn/zh/resources/conversion-calculators/conversion-calculator-dbm-to-watts

实现Obsidian PC端和手机端(安卓)同步

步骤 1&#xff1a;在PC端设置Obsidian 安装Obsidian和Git&#xff1a;确保你的PC上已经安装了Obsidian和Git。你可以从Obsidian官网和Git官网下载并安装。 克隆GitHub代码库&#xff1a;在PC上打开命令行&#xff08;例如Windows的命令提示符或Mac/Linux的终端&#xff09;&a…

【计算机网络】三次握手、四次挥手

问&#xff1a;三次握手 四次挥手 TCP 连接过程是 3 次握手&#xff0c;终止过程是 4 次挥手 3次握手 第一步&#xff1a;客户端向服务器发送一个带有 SYN&#xff08;同步&#xff09;标志的包&#xff0c;指示客户端要建立连接。 第二步&#xff1a;服务器收到客户端的请求…

修改mysql数据库root密码为空

use mysql update user set authentication_string where userroot; USE mysql; UPDATE user SET authentication_stringPASSWORD(新密码) WHERE Userroot; FLUSH PRIVILEGES;

会Excel就会sql?

如果你熟悉Excel,理解SQL(结构化查询语言,Structured Query Language)会相对容易,因为它们在某些功能上有着相似之处。SQL主要用于管理和操作数据库中的数据,而Excel则是电子表格软件,用于数据的组织、分析和可视化。下面我会用Excel的视角来帮你理解SQL的基本概念。 数…

什么是高性能计算平台?

随着信息技术的飞速发展&#xff0c;数据处理和分析能力已成为各行各业竞争的关键。在这一背景下&#xff0c;高性能计算平台&#xff08;High Performance Computing, HPC&#xff09;应运而生&#xff0c;以其强大的计算能力和高效的数据处理能力&#xff0c;为科研、工业、金…

注解(持续更新)

注解 文章目录 注解注解定义文档注释在编译时进行格式检查&#xff08;基本注解&#xff09;事务注解&#xff08;后续更新&#xff09; 注解定义 从 JDK 5.0 开始, Java 增加了对元数据(MetaData) 的支持, 也就是Annotation(注解) 。java注解&#xff08;Annotation&#xff…