fix: 单点登录优化

This commit is contained in:
Gsh
2025-06-27 14:23:06 +08:00
parent 12eb6c73c3
commit 96e275efa6

View File

@@ -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);
}
};