diff --git a/src/AuthRoute.tsx b/src/AuthRoute.tsx index a70354f..725136c 100644 --- a/src/AuthRoute.tsx +++ b/src/AuthRoute.tsx @@ -5,6 +5,7 @@ const AuthRoute = () => { const matches = useMatches() const lastMatch = matches.reduce((_, second) => second) const handle = lastMatch.handle as RouteHandle + const location = useLocation() const outlet = useOutlet() const isLogin = getLoginStatus() @@ -13,7 +14,13 @@ const AuthRoute = () => { handle?.title ? handle?.title : PRODUCTION_NAME }${handle?.titlePostfix ?? ''}` if (handle?.auth && !isLogin) { - return + return ( + @@ -26,6 +33,7 @@ const AuthRoute = () => { handle?.titlePrefix, isLogin, lastMatch.pathname, + location.search, outlet ]) } diff --git a/src/pages/Login.tsx b/src/pages/Login.tsx index 02ff4d2..92a8bac 100644 --- a/src/pages/Login.tsx +++ b/src/pages/Login.tsx @@ -12,6 +12,7 @@ import '@/assets/css/pages/login.scss' const Login: React.FC = () => { const [messageApi, contextHolder] = message.useMessage() const navigate = useNavigate() + const [searchParams] = useSearchParams() const [isLoggingIn, setIsLoggingIn] = useState(false) const onFinish = (values: LoginForm) => { @@ -25,7 +26,11 @@ const Login: React.FC = () => { setToken(data?.token ?? '') void messageApi.success('登录成功') setTimeout(() => { - navigate('/') + if (searchParams.has('redirect')) { + navigate(searchParams.get('redirect') ?? '/') + } else { + navigate('/') + } }, 1500) break case SYSTEM_USERNAME_NOT_FOUND: