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:
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user