fix: login 修改

This commit is contained in:
xion 2024-10-22 23:47:46 +08:00
parent fa6c9785c5
commit 4e0e149f54

View File

@ -2,6 +2,33 @@ import { query } from '@/modules';
import { message } from 'antd';
import { create } from 'zustand';
import { history } from '@/utils/history';
// 如果自己是在iframe中登录需要调用这个方法
export const postLoginInIframe = (token: string) => {
console.log('window.parent !== window', window.parent !== window);
if (window.parent === window) {
return;
}
// 获取父窗口的来源
const parentOrigin = window.location.ancestorOrigins ? window.location.ancestorOrigins[0] : document.referrer;
// 检查父窗口的来源是否合法
const allowedOrigins = ['http://localhost', /^https?:\/\/(.+\.)?on-ai\.ai$/, /^https?:\/\/(.+\.)?xiongxiao\.me$/];
let targetOrigin: string | null = null;
// 根据来源动态选择 targetOrigin
if (allowedOrigins.some((origin) => (typeof origin === 'string' ? parentOrigin.includes(origin) : origin.test(parentOrigin)))) {
targetOrigin = parentOrigin; // 使用合法来源作为 targetOrigin
}
// 如果找到合法的 targetOrigin则发送消息
if (targetOrigin) {
const message = { type: 'login-from-iframe', data: { token } };
parent.postMessage(message, targetOrigin);
} else {
console.warn('Parent origin is not allowed:', parentOrigin);
}
};
type LoginStore = {
loading: boolean;
setLoading: (loading: boolean) => void;
@ -35,6 +62,10 @@ export const useLoginStore = create<LoginStore>((set, get) => {
set({ isLogin: true });
query.saveToken(token);
await new Promise((resolve) => setTimeout(resolve, 1000));
if (window.parent !== window) {
postLoginInIframe(token);
await new Promise((resolve) => setTimeout(resolve, 3000));
}
const search = new URLSearchParams(window.location.search);
const redirect = search.get('redirect');
if (redirect) {