Add redirect after login

This commit is contained in:
2023-10-11 14:41:27 +08:00
parent 885a097e7f
commit bd1e699543
2 changed files with 15 additions and 2 deletions

View File

@@ -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 <Navigate to="/login" />
return (
<Navigate
to={`/login${
'?redirect=' + encodeURIComponent(lastMatch.pathname + location.search)
}`}
/>
)
}
if (isLogin && lastMatch.pathname === '/login') {
return <Navigate to="/" />
@@ -26,6 +33,7 @@ const AuthRoute = () => {
handle?.titlePrefix,
isLogin,
lastMatch.pathname,
location.search,
outlet
])
}

View File

@@ -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: