Add auth protection sample and standardize json.

This commit is contained in:
2025-05-14 09:26:48 +08:00
parent bcb820ea9b
commit 418a30f062
6 changed files with 71 additions and 20 deletions
+8 -1
View File
@@ -16,7 +16,14 @@ export default function HealthStatus() {
throw new Error(`Server responded with status: ${response.status}`);
}
const data = await response.json();
let data;
try {
data = await response.json();
} catch (jsonErr) {
setError("Response is not valid JSON");
setHealth({});
return;
}
setHealth(data);
} catch (err) {
setError(
+18 -3
View File
@@ -43,9 +43,24 @@ export function AuthProvider({ children }: { children: ReactNode }) {
);
if (response.ok) {
const userData = await response.json();
setUser(userData);
setIsAuthenticated(true);
let userData;
try {
userData = await response.json();
} catch (jsonErr) {
// 不是 JSON,降级处理
setUser(null);
setIsAuthenticated(false);
setLoading(false);
return;
}
// 处理后端返回 { error: ... }
if (userData && userData.error) {
setUser(null);
setIsAuthenticated(false);
} else {
setUser(userData);
setIsAuthenticated(true);
}
} else {
setUser(null);
setIsAuthenticated(false);