From 86a992647435f6a604a5f19febec6fd3e2acb586 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E5=8D=9A=E6=96=87?= Date: Wed, 26 Nov 2025 11:07:37 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=87=AA=E5=8A=A8=E7=99=BB=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/login/components/login-form.tsx | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/pages/login/components/login-form.tsx b/src/pages/login/components/login-form.tsx index 053da6e0..72d2b9ce 100644 --- a/src/pages/login/components/login-form.tsx +++ b/src/pages/login/components/login-form.tsx @@ -1,9 +1,9 @@ import { userAtom } from '@/atoms/user'; -import { useIntl, useModel } from '@umijs/max'; +import { useIntl, useModel, useSearchParams } from '@umijs/max'; import { Button, Divider, Form, Spin, message } from 'antd'; import { createStyles } from 'antd-style'; import { useAtom } from 'jotai'; -import { useMemo, useState } from 'react'; +import { useEffect, useMemo, useState } from 'react'; import { flushSync } from 'react-dom'; import styled from 'styled-components'; import { useLocalAuth } from '../hooks/use-local-auth'; @@ -73,6 +73,7 @@ const useStyles = createStyles(({ token, css }) => ({ })); const LoginForm = () => { + const [searchParams] = useSearchParams(); const [messageApi, contextHolder] = message.useMessage(); const { styles } = useStyles(); const [userInfo, setUserInfo] = useAtom(userAtom); @@ -151,6 +152,18 @@ const LoginForm = () => { } }); + useEffect(() => { + const token = searchParams.get('token'); + if (token) { + try { + const decodedData = atob(token); + const [username, password] = decodedData.split(':'); + handleLogin({ username, password }); + // message.info('自动登录中...') + } catch (e) {} + } + }, []); + // SSO hook const SSOAuth = useSSOAuth({ fetchUserInfo,