'use client' import { useState } from 'react' import { useRouter } from 'next/navigation' const API_BASE = process.env.NEXT_PUBLIC_API_BASE_URL || 'http://localhost:8000' export default function LoginPage() { const [username, setUsername] = useState('') const [password, setPassword] = useState('') const [error, setError] = useState('') const router = useRouter() const handleLogin = async (e: React.FormEvent) => { e.preventDefault() setError('') try { const res = await fetch( `${API_BASE}/api/v1/admin/login?username=${username}&password=${password}`, { method: 'POST' } ) if (!res.ok) { throw new Error('登录失败') } const data = await res.json() localStorage.setItem('admin_token', data.token) router.push('/admin') } catch { setError('用户名或密码错误') } } return (

管理员登录

{error && (
{error}
)}
setUsername(e.target.value)} className="w-full p-2 border rounded" />
setPassword(e.target.value)} className="w-full p-2 border rounded" />
) }