У меня есть react app(localhost:9060)
, который содержит iframe для другого react app(localhost:3000)
.
Дочернее приложение выполняет процесс входа в систему и аутентификации и возвращает токен в случае успеха. Затем я передаю токен родительскому приложению через cross-domain-messaging-with-post-message
( отметьте здесь )
Когда я получаю токен в родительском приложении. Я пытаюсь перенаправить URL на главную страницу.
С /login
до /home
Внезапно в этой строке кода мое приложение вылетает, и я даже не могу ничего отладить, потому что вся вкладка получает застрял. Мне нужно завершить процесс chrome из диспетчера задач.
Родительское приложение:
import React, { useState, useEffect } from "react";
import { History } from "history";
interface Props {
history: History;
}
export default function LoginIframe(props: Props) {
window.onmessage = function(event: any) {
if (typeof event.data === "string") {
authTokenHolder.setJwt(event.data); //set the token in the local storage
props.history.push("/home");
}
};
return (
<iframe
id="receiver"
src="http://localhost:3000/"
className="stack-iframe-login"
/>
);
}
Процесс получения токена работает нормально. Кроме того, он на самом деле правильно устанавливает токен в родительском приложении.
После сбоя моего приложения я открываю новую вкладку, и когда я go до /home
, я вижу, что токен был успешно установлен, и я вошел в систему