This commit is contained in:
MeSHard
2025-11-10 16:12:07 +08:00
parent 99f88bc53e
commit 94f7e83679
181 changed files with 15770 additions and 0 deletions

View File

@@ -0,0 +1,53 @@
<?php
// app/middleware/RequestLog.php
namespace app\middleware;
use app\model\SystemRequestLog;
use think\facade\Request;
class RequestLog
{
public function handle($request, \Closure $next)
{
$startTime = microtime(true);
$response = $next($request);
// 排除特定路由
if (in_array($request->pathinfo(), ['/favicon.ico'])) {
return $response;
}
try {
$log = [
'method' => $request->method(),
'url' => $request->url(),
'params' => $this->filterParams($request->param()),
'ip' => $request->ip(),
'user_agent' => $request->header() ? $request->header('user-agent') : '无',
'user_id' => $request->userId ?? 0, // 需要根据你的认证系统调整
'response_code' => $response->getCode(),
'response_time' => round(microtime(true) - $startTime, 3),
];
SystemRequestLog::create($log);
} catch (\Exception $e) {
// 记录失败不影响主流程
\think\facade\Log::error('请求日志记录失败:'.$e->getMessage());
}
return $response;
}
protected function filterParams($params)
{
// 过滤敏感字段
$sensitiveFields = ['password', 'pwd', 'token', 'access_token'];
foreach ($sensitiveFields as $field) {
if (isset($params[$field])) {
$params[$field] = '******';
}
}
return $params;
}
}

View File

@@ -0,0 +1,65 @@
<?php
declare (strict_types = 1);
namespace app\middleware;
use Firebase\JWT\JWT;
use Firebase\JWT\Key;
class WxAppCheck
{
/**
* 处理请求
*
* @param \think\Request $request
* @param \Closure $next
*
*/
public function handle($request, \Closure $next)
{
$token=request()->header('token');
//验证token
$res=checkToken_s($token);
//对返回结果进行判断
if (!is_numeric($res)){
return json(['code'=>1,'message'=>$res]);
}
//保存用户ID
$request->uid=$res;
return $next($request);
}
}
function checkToken_s($token)
{
$key = 'zbcazbc';
$key = new Key($key, 'HS256');
$status = array("code" => 2);
// echo $token;
try {
JWT::$leeway = 60;//当前时间减去60把时间留点余地
$decoded = JWT::decode($token, $key, array('HS256')); //HS256方式这里要和签发的时候对应
$arr = (array)$decoded;
// print_r($arr);
$res['code'] = 1;
$res['data'] = $arr['data'];
return $res['data']->uid;
} catch (\Firebase\JWT\SignatureInvalidException $e) { //签名不正确
$status['msg'] = "签名不正确";
return $status['msg'];
} catch (\Firebase\JWT\BeforeValidException $e) { // 签名在某个时间点之后才能用
$status['msg'] = "token失效";
return $status['msg'];
} catch (\Firebase\JWT\ExpiredException $e) { // token过期
$status['msg'] = "token失效";
return $status['msg'];
} catch (\Exception $e) { //其他错误
$status['msg'] = "未知错误";
return $status['msg'];
}
}