import { useEffect, useState } from 'react'; import { useNavigate } from 'react-router-dom'; import { Spin, Result, Button } from 'antd'; import { authApi } from '../services/api'; export default function AuthCallback() { const navigate = useNavigate(); const [status, setStatus] = useState<'loading' | 'success' | 'error'>('loading'); const [errorMessage, setErrorMessage] = useState(''); useEffect(() => { const handleCallback = async () => { try { // 后端会通过 Cookie 自动设置认证信息 // 这里只需要验证登录状态 await authApi.getCurrentUser(); setStatus('success'); // 从 sessionStorage 获取重定向地址 const redirect = sessionStorage.getItem('login_redirect') || '/'; sessionStorage.removeItem('login_redirect'); // 延迟一下再跳转,让用户看到成功提示 setTimeout(() => { navigate(redirect); }, 1000); } catch (error) { console.error('登录失败:', error); setStatus('error'); setErrorMessage('登录失败,请重试'); } }; handleCallback(); }, [navigate]); if (status === 'loading') { return (