fix: 单点登录优化
This commit is contained in:
@@ -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);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user