fix: login 修改
This commit is contained in:
parent
fa6c9785c5
commit
4e0e149f54
@ -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) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user