From 79e16909f02ede5082ce1be5bee77f3f61d33966 Mon Sep 17 00:00:00 2001 From: liangdong Date: Sun, 11 Jan 2026 22:23:34 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E7=99=BB=E5=BD=95=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E8=AE=B0=E4=BD=8F=E5=AF=86=E7=A0=81=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E8=B7=AF=E7=94=B1=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/Login/index.vue | 37 ++++++++++++++++++++----- src/router/index.ts | 57 ++++++++++++++++++++++++++++++++------- src/utils/storage.ts | 21 ++++++++++----- 3 files changed, 94 insertions(+), 21 deletions(-) diff --git a/src/pages/Login/index.vue b/src/pages/Login/index.vue index d4013d3..3859837 100644 --- a/src/pages/Login/index.vue +++ b/src/pages/Login/index.vue @@ -110,12 +110,13 @@ const router = useRouter(); const route = useRoute(); const userStore = useUserStore(); const tokenManager = TokenManager.getInstance(); +const KEEP_KEY = "keep_login_remember"; const loginFormRef = ref(); const loading = ref(false); const loginForm = reactive({ - username: "18280362106", - password: "123456789", + username: "", + password: "", remember:false }); @@ -159,22 +160,46 @@ const handleLogin = async () => { userStore.setToken(refresh_token); // 获取用户信息 userStore.setUserInfo(userInfo); - // TODO:记住密码功能 + // 记住密码功能 + if (loginForm.remember) { + const saveInfo = { + username: loginForm.username, + password: loginForm.password // TODO:密码要加密才行 + }; + tokenManager.setToken(KEEP_KEY, JSON.stringify(saveInfo)); + } else { + // 如果用户取消勾选,则移除 + tokenManager.removeToken(KEEP_KEY); + } ElMessage.success("登录成功"); // 跳转到首页或之前访问的页面 - const redirect = (route.query.redirect as string) || "/"; - router.push(redirect); + const redirect = (route.query.redirect as string); + router.push({path:'/',query:redirect}); } } catch (error: any) { console.error("Login error:", error); - ElMessage.error(error.error || "登录失败,请稍后重试"); } finally { loading.value = false; } }); }; + + +onMounted(() => { + const savedInfo = tokenManager.getToken(KEEP_KEY); + if (savedInfo) { + try { + const { username, password } = JSON.parse(savedInfo); + loginForm.username = username; + loginForm.password = password; + loginForm.remember = true; + } catch (e) { + console.error("解析记住的密码失败", e); + } + } +});