fix: login 修改
This commit is contained in:
parent
fa6c9785c5
commit
4e0e149f54
@ -2,6 +2,33 @@ import { query } from '@/modules';
|
|||||||
import { message } from 'antd';
|
import { message } from 'antd';
|
||||||
import { create } from 'zustand';
|
import { create } from 'zustand';
|
||||||
import { history } from '@/utils/history';
|
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 = {
|
type LoginStore = {
|
||||||
loading: boolean;
|
loading: boolean;
|
||||||
setLoading: (loading: boolean) => void;
|
setLoading: (loading: boolean) => void;
|
||||||
@ -35,6 +62,10 @@ export const useLoginStore = create<LoginStore>((set, get) => {
|
|||||||
set({ isLogin: true });
|
set({ isLogin: true });
|
||||||
query.saveToken(token);
|
query.saveToken(token);
|
||||||
await new Promise((resolve) => setTimeout(resolve, 1000));
|
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 search = new URLSearchParams(window.location.search);
|
||||||
const redirect = search.get('redirect');
|
const redirect = search.get('redirect');
|
||||||
if (redirect) {
|
if (redirect) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user