init
This commit is contained in:
53
app/middleware/RequestLog.php
Normal file
53
app/middleware/RequestLog.php
Normal 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;
|
||||
}
|
||||
}
|
||||
65
app/middleware/WxAppCheck.php
Normal file
65
app/middleware/WxAppCheck.php
Normal 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'];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user