diff --git a/app/api/upload/route.ts b/app/api/upload/route.ts index e32c63c..ce62b1b 100644 --- a/app/api/upload/route.ts +++ b/app/api/upload/route.ts @@ -25,7 +25,9 @@ export async function POST(request: NextRequest) { const buffer = await file.arrayBuffer(); await fs.writeFile(filepath, Buffer.from(buffer)); - const url = `/uploads/${filename}`; + const host = request.headers.get('host') || 'localhost:3000'; + const protocol = request.headers.get('x-forwarded-proto') || 'http'; + const url = `${protocol}://${host}/uploads/${filename}`; return NextResponse.json({ url }); } catch (error) { console.error('Upload error:', error); diff --git a/app/owner/page.tsx b/app/owner/page.tsx index 83a3cd3..d8a271e 100644 --- a/app/owner/page.tsx +++ b/app/owner/page.tsx @@ -11,23 +11,45 @@ export default function OwnerPage() { const [password, setPassword] = useState(""); const [error, setError] = useState(""); const [loading, setLoading] = useState(false); - const [user, setUser] = useState<{ username: string } | null>(null); + const [checking, setChecking] = useState(true); + const [ready, setReady] = useState(false); useEffect(() => { - checkAuth(); - }, []); - - async function checkAuth() { - try { - const res = await fetch("/api/auth/me"); - const data = await res.json(); - if (data.user) { - setUser(data.user); - router.push("/owner/dashboard"); + let cancelled = false; + + async function checkAuth() { + try { + const res = await fetch("/api/auth/me"); + const data = await res.json(); + if (!cancelled && data.user) { + router.replace("/owner/dashboard"); + return; + } + } catch (error) { + console.error("检查登录状态失败", error); + } + if (!cancelled) { + setChecking(false); + setReady(true); } - } catch (error) { - console.error("检查登录状态失败", error); } + + checkAuth(); + + return () => { + cancelled = true; + }; + }, [router]); + + if (!ready) { + return ( +
+
+
🏗️
+

检查登录状态...

+
+
+ ); } async function handleSubmit(e: React.FormEvent) {