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
+6 -6
View File
@@ -5,15 +5,15 @@ version = 0
soulsoft_extensions_options = {version = "1.0.20260528"} soulsoft_extensions_options = {version = "1.0.20260528"}
redis = {version = "1.0.20260627"} redis = {version = "1.0.20260627"}
soulsoft_serialization = {version = "1.0.20260528"} soulsoft_serialization = {version = "1.0.20260528"}
soulsoft_web_http = {version = "1.0.20260528"}
soulsoft_identity_claims = {version = "1.0.20260528"} soulsoft_identity_claims = {version = "1.0.20260528"}
soulsoft_web_routing = {version = "1.0.20260528"}
soulsoft_extensions_hosting = {version = "1.0.20260528"}
soulsoft_extensions_logging = {version = "1.0.20260528"}
soulsoft_web_cors = {version = "1.0.20260528"} soulsoft_web_cors = {version = "1.0.20260528"}
soulsoft_extensions_hosting = {version = "1.0.20260528"}
soulsoft_web_mvc = {version = "1.0.20260528"}
soulsoft_extensions_logging = {version = "1.0.20260528"}
soulsoft_extensions_logging_console = {version = "1.0.20260528"} soulsoft_extensions_logging_console = {version = "1.0.20260528"}
soulsoft_extensions_configuration = {version = "1.0.20260528"} soulsoft_extensions_configuration = {version = "1.0.20260528"}
soulsoft_web_routing = {version = "1.0.20260528"}
soulsoft_extensions_injection = {version = "1.0.20260528"} soulsoft_extensions_injection = {version = "1.0.20260528"}
soulsoft_extensions_logging_configuration = {version = "1.0.20260528"}
soulsoft_web_hosting = {version = "1.0.20260528"} soulsoft_web_hosting = {version = "1.0.20260528"}
soulsoft_web_mvc = {version = "1.0.20260528"} soulsoft_extensions_logging_configuration = {version = "1.0.20260528"}
soulsoft_web_http = {version = "1.0.20260528"}
+10 -6
View File
@@ -157,11 +157,20 @@ public class SimApiAuth {
} }
} }
return match (json) { return match (json) {
case Some(j) => Some(parseLoginItem(j)) case Some(j) => parseLoginItemSafe(j)
case None => None 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。 * @param userId 用户 ID。
@@ -288,9 +297,4 @@ public class SimApiAuth {
// 统一 JSON 序列化:对齐 .NET JsonSerializer.Serialize(item) // 统一 JSON 序列化:对齐 .NET JsonSerializer.Serialize(item)
JsonSerializer.Serialize(item) JsonSerializer.Serialize(item)
} }
private static func parseLoginItem(json: String): SimApiLoginItem {
// 统一 JSON 反序列化:对齐 .NET JsonSerializer.Deserialize<SimApiLoginItem>(json)
JsonSerializer.Deserialize<SimApiLoginItem>(json)
}
} }