'use client'; import { usePathname, useRouter } from 'next/navigation'; import { useEffect, useState } from 'react'; import { useAuthStore } from '@/stores/auth-store'; export function RequireAuth({ children }: { children: React.ReactNode }) { const router = useRouter(); const pathname = usePathname(); const accessToken = useAuthStore((s) => s.accessToken); const [mounted, setMounted] = useState(false); useEffect(() => { setMounted(true); }, []); useEffect(() => { if (!mounted) { return; } if (!accessToken) { const from = pathname || '/dashboard'; router.replace(`/login?from=${encodeURIComponent(from)}`); } }, [mounted, accessToken, pathname, router]); if (!mounted) { return (
加载中…
); } if (!accessToken) { return (
跳转登录…
); } return <>{children}; }