Compare commits

..

2 Commits

Author SHA1 Message Date
tk
842415a3cc 【类 型】:
【主	题】:
【描	述】:
	[原因]:
	[过程]:
	[影响]:
【结	束】

# 类型 包含:
# feat:新功能(feature)
# fix:修补bug
# docs:文档(documentation)
# style: 格式(不影响代码运行的变动)
# refactor:重构(即不是新增功能,也不是修改bug的代码变动)
# test:增加测试
# chore:构建过程或辅助工具的变动
Merge branch 'master' of http://111.229.174.37:3000/Food/food_server

# Conflicts:
#	FlyCube/Api/Controller/PublicController.class.php
2024-06-05 17:36:07 +08:00
tk
4e39ba6db0 【类 型】:fix
【主	题】:登录 token格式不合法 造成页面崩溃
【描	述】:
	[原因]:登录 token格式不合法 造成页面崩溃
	[过程]:通过jwt 抛异常
	[影响]:
【结	束】

# 类型 包含:
# feat:新功能(feature)
# fix:修补bug
# docs:文档(documentation)
# style: 格式(不影响代码运行的变动)
# refactor:重构(即不是新增功能,也不是修改bug的代码变动)
# test:增加测试
# chore:构建过程或辅助工具的变动
2024-06-05 17:34:12 +08:00
2 changed files with 21 additions and 22 deletions

View File

@ -75,6 +75,7 @@ class PublicController extends Controller
'iat' => $currtime, // 签发时间(时间戳) 'iat' => $currtime, // 签发时间(时间戳)
'iss' => 'jwt_admin', // 签发者 'iss' => 'jwt_admin', // 签发者
'nbf' => $currtime, // 在此时间之前不可用 (这里是2秒以内) 'nbf' => $currtime, // 在此时间之前不可用 (这里是2秒以内)
'exp' => strtotime('tomorrow'), //过期时间 到第二天凌晨
'exp' => $currtime + 20, //过期时间 到第二天凌晨 'exp' => $currtime + 20, //过期时间 到第二天凌晨
'openid' => $openid, 'openid' => $openid,
'session_key' => $session_key, 'session_key' => $session_key,

View File

@ -16,32 +16,30 @@ class PublicController extends Controller
{ {
header("Access-Control-Allow-Origin: " . C('LimitApi')); //请求域名限制 header("Access-Control-Allow-Origin: " . C('LimitApi')); //请求域名限制
header('Access-Control-Allow-Headers:Token'); //token请求头 header('Access-Control-Allow-Headers:Token'); //token请求头
// token 验证 // 获取请求头中的 Token
$server = isset($_SERVER) ? $_SERVER : ""; $token = isset($_SERVER['HTTP_TOKEN']) ? $_SERVER['HTTP_TOKEN'] : null;
$token = isset($server['HTTP_TOKEN']) && is_string($server['HTTP_TOKEN']) ? $server['HTTP_TOKEN'] : null; // 获取 jwt 密钥
// 如果 token 不存在,可以返回错误信息 $jwtKey = C('jwtKey');
if (!$token) {
echo json_encode(array('status' => -1, 'msg' => 'Token 不存在或无效!'));
exit();
}
$jwtKey = C('jwtKey'); // jwt密钥
try { try {
// 使用密钥和 HS256 算法对 JWT 进行解码 // 解码 JWT Token
$jwt = JWT::decode($token, new Key($jwtKey, 'HS256')); $decoded = JWT::decode($token, new Key($jwtKey, 'HS256'));
$res_token = (array) $jwt; // 将解码后的对象转换为数组 // Token 没有过期,继续处理 token验证通过 获取shop_id
// token过期 $this->tokenShop_id = $decoded->shop_id;
if (empty($res_token)) { } catch (\Firebase\JWT\ExpiredException $e) {
echo json_encode(array('status' => -1, 'msg' => '帐号认证过期!')); // Token 过期
exit(); echo json_encode(array('status' => -1, 'msg' => 'Token 已过期'));
} exit();
// token验证通过 获取shop_id } catch (\Exception $e) {
$this->tokenShop_id = $res_token['shop_id']; // 其他 JWT 解码错误
} catch (Exception $e) { echo json_encode(array('status' => -1, 'msg' => 'Token 解码失败'));
// 捕获解码过程中可能的异常,并返回错误信息 exit();
echo json_encode(array('status' => -1, 'msg' => 'Token 无效: ' . $e->getMessage())); } catch (\TypeError $e) {
// 处理 Token 为 null 或者不是字符串的情况
echo json_encode(array('status' => -1, 'msg' => 'Token 无效'));
exit(); exit();
} }
} }
/** /**
* @description: 总管理员 可接收任何shop_id 非总管理员 只可以调用自身shop_id 否则会中断 * @description: 总管理员 可接收任何shop_id 非总管理员 只可以调用自身shop_id 否则会中断
*/ */