Add auth protection sample and standardize json.
This commit is contained in:
@@ -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(
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user