From 96e275efa6ce68f7b4761f2a4a9e78023fb8b3e9 Mon Sep 17 00:00:00 2001 From: Gsh <15170702455@163.com> Date: Fri, 27 Jun 2025 14:23:06 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=8D=95=E7=82=B9=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/LoginDialog/index.vue | 61 +++++++++---------- 1 file changed, 30 insertions(+), 31 deletions(-) diff --git a/Yi.Ai.Vue3/src/components/LoginDialog/index.vue b/Yi.Ai.Vue3/src/components/LoginDialog/index.vue index 4007e37d..f853cae0 100644 --- a/Yi.Ai.Vue3/src/components/LoginDialog/index.vue +++ b/Yi.Ai.Vue3/src/components/LoginDialog/index.vue @@ -67,38 +67,37 @@ function handleThirdPartyLogin() { let isHandled = false; const messageHandler = async (event: any) => { - // 验证来源 + 防重复 - if ( - event.origin !== new URL(SSO_SEVER_URL).origin - || event.data.type !== 'SSO_LOGIN_SUCCESS' - || isHandled - ) { - return; + if (event.origin === new URL(SSO_SEVER_URL).origin + || event.data.type === 'SSO_LOGIN_SUCCESS' + || !isHandled) { + isHandled = true; + try { + const { token } = event.data; + userStore.setToken(token); + + const resUserInfo = await getUserInfo(); + userStore.setUserInfo(resUserInfo.data); + + // 关闭弹窗 + if (popup && !popup.closed) + popup.close(); + + // 清理监听 + window.removeEventListener('message', messageHandler); + + // 后续逻辑 + ElMessage.success('登录成功'); + userStore.closeLoginDialog(); + await sessionStore.requestSessionList(1, true); + await router.replace('/'); + } + catch (error) { + console.error('登录处理失败:', error); + ElMessage.error('登录失败'); + } } - isHandled = true; - try { - const { token } = event.data; - userStore.setToken(token); - - const resUserInfo = await getUserInfo(); - userStore.setUserInfo(resUserInfo.data); - - // 关闭弹窗 - if (popup && !popup.closed) - popup.close(); - - // 清理监听 - window.removeEventListener('message', messageHandler); - - // 后续逻辑 - ElMessage.success('登录成功'); - userStore.closeLoginDialog(); - await sessionStore.requestSessionList(1, true); - await router.replace('/'); - } - catch (error) { - console.error('登录处理失败:', error); - ElMessage.error('登录失败'); + else { + console.log('2222-', event); } };