"use client"; import { getCsrfToken } from "next-auth/react"; import { useTranslations } from "next-intl"; import { useRouter } from "next/navigation"; import { useEffect, useState } from "react"; import { Loader } from "./loading/Loader"; export function SignIn() { const t = useTranslations("SignIn"); const [csrfToken, setCsrfToken] = useState(""); const [loading, setLoading] = useState(false); const router = useRouter(); useEffect(() => { async function loadProviders() { const csrf = await getCsrfToken(); setCsrfToken(csrf); } loadProviders(); }, []); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setLoading(true); const formData = new FormData(e.currentTarget); // 直接构建 URL 编码的字符串 const urlEncodedData = [ `csrfToken=${encodeURIComponent(csrfToken)}`, `redirect=false`, `password=${encodeURIComponent(formData.get('password') as string)}`, ].join('&'); await fetch("/api/auth/callback/credentials", { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded", }, body: urlEncodedData, }); router.push("/"); router.refresh(); setLoading(false) }; return (
); }