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 (
+
+ )
}
if (isLogin && lastMatch.pathname === '/login') {
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: