fix: 无效 Token 导致的 /config 500——getLogin 解析失败返回 None 而非抛异常

- SimApiAuth.getLogin:JSON 无效/非对象时返回 None(视为 token 无效),
  不再抛 JsonException(Fail to convert to JsonObject)
- 新增 parseLoginItemSafe 私有辅助,删除旧 parseLoginItem
- 复现:带无效 Token 的 POST /config 之前 500,现在 200 正常
- 验证:无效/有效 Token、GET/POST /config 均正常,日志无 Fail to convert
This commit is contained in:
2026-08-18 02:26:58 +08:00
parent 11360b3359
commit 3925d0d5ad
2 changed files with 16 additions and 12 deletions
+10 -6
View File
@@ -157,11 +157,20 @@ public class SimApiAuth {
}
}
return match (json) {
case Some(j) => Some(parseLoginItem(j))
case Some(j) => parseLoginItemSafe(j)
case None => None
}
}
/// 解析登录信息;JSON 无效/非对象时返回 None(视为 token 无效,对齐 C# 返回 null
private static func parseLoginItemSafe(json: String): ?SimApiLoginItem {
try {
Some(JsonSerializer.Deserialize<SimApiLoginItem>(json))
} catch (_: Exception) {
None
}
}
/**
* 获取某用户全部登录信息。
* @param userId 用户 ID。
@@ -288,9 +297,4 @@ public class SimApiAuth {
// 统一 JSON 序列化:对齐 .NET JsonSerializer.Serialize(item)
JsonSerializer.Serialize(item)
}
private static func parseLoginItem(json: String): SimApiLoginItem {
// 统一 JSON 反序列化:对齐 .NET JsonSerializer.Deserialize<SimApiLoginItem>(json)
JsonSerializer.Deserialize<SimApiLoginItem>(json)
}
}