From 0c98d52a16d66499eaebe5bef34b9aaa34f7f173 Mon Sep 17 00:00:00 2001 From: wood chen Date: Fri, 21 Feb 2025 16:45:52 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E6=9B=B4=E6=96=B0=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E6=8E=88=E6=9D=83=E7=BB=84=E4=BB=B6=E4=BB=A5=E4=BD=BF?= =?UTF-8?q?=E7=94=A8next-auth=E8=BF=9B=E8=A1=8C=E7=99=BB=E5=BD=95=EF=BC=8C?= =?UTF-8?q?=E7=AE=80=E5=8C=96=E9=87=8D=E5=AE=9A=E5=90=91=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E5=B9=B6=E4=BC=98=E5=8C=96=E4=BC=9A=E8=AF=9D=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/auth/user-authorize.tsx | 28 ++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/src/components/auth/user-authorize.tsx b/src/components/auth/user-authorize.tsx index 5530211..8becf4a 100644 --- a/src/components/auth/user-authorize.tsx +++ b/src/components/auth/user-authorize.tsx @@ -1,7 +1,8 @@ "use client"; import { useCallback, useEffect, useState } from "react"; -import { signIn } from "@/actions/user-authorize"; +import { useRouter } from "next/navigation"; +import { signIn as nextAuthSignIn, useSession } from "next-auth/react"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; @@ -16,6 +17,8 @@ export function UserAuthorize({ }: UserAuthorizeProps) { const [isLoading, setIsLoading] = useState(false); const [error, setError] = useState(null); + const { update } = useSession(); + const router = useRouter(); const signInCallback = useCallback(async () => { if (isLoading) { @@ -23,19 +26,28 @@ export function UserAuthorize({ } setIsLoading(true); try { - await signIn(data); - setIsLoading(false); + const result = await nextAuthSignIn("credentials", { + ...data, + redirect: false, + }); + + if (result?.error) { + setError(result.error); + } else { + // 更新 session + await update(); + // 登录成功后重定向到控制台 + router.push("/dashboard"); + } } catch (error) { setError(error); + } finally { setIsLoading(false); } - }, [data, isLoading]); + }, [data, isLoading, update, router]); useEffect(() => { - const timer = setTimeout(signInCallback, 5); - return () => { - clearTimeout(timer); - }; + signInCallback(); }, [signInCallback]); return (