fix: 单点登录优化
This commit is contained in:
@@ -67,38 +67,37 @@ function handleThirdPartyLogin() {
|
|||||||
let isHandled = false;
|
let isHandled = false;
|
||||||
|
|
||||||
const messageHandler = async (event: any) => {
|
const messageHandler = async (event: any) => {
|
||||||
// 验证来源 + 防重复
|
if (event.origin === new URL(SSO_SEVER_URL).origin
|
||||||
if (
|
|| event.data.type === 'SSO_LOGIN_SUCCESS'
|
||||||
event.origin !== new URL(SSO_SEVER_URL).origin
|
|| !isHandled) {
|
||||||
|| event.data.type !== 'SSO_LOGIN_SUCCESS'
|
isHandled = true;
|
||||||
|| isHandled
|
try {
|
||||||
) {
|
const { token } = event.data;
|
||||||
return;
|
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;
|
else {
|
||||||
try {
|
console.log('2222-', event);
|
||||||
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('登录失败');
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user