Anteriormente estaba usando el almacenamiento local para almacenar los tokens para que puedan compartirse entre todas las pestañas, pero necesitaba un requisito para eliminar los tokens cuando el usuario cierra todas las pestañas o todo el navegador, así que cambié al almacenamiento de sesión para guardar el token y el detector de eventos de almacenamiento usado para compartirlo entre todas las pestañas, la funcionalidad funciona como se esperaba, pero pude ver un caso extremo aquí, cuando inicio sesión correctamente, abro una nueva pestaña e intento abrir la aplicación, redirige a la página de inicio de sesión porque cuando la página se muestra al principio no tendrá token en el almacenamiento de la sesión, después de unos segundos solo obtendremos el token de la pestaña de inicio de sesión.
Mi requisito es: ¿cómo puedo obtener los datos del almacenamiento de la sesión de la pestaña ya abierta y almacenarlos en la pestaña recién abierta antes de que se represente la página?
De acuerdo con el código, se redirige a la página de inicio de sesión ya que no tiene tokens durante el procesamiento de la página, pero después de eso, puedo ver los tokens en el almacenamiento de la sesión, entonces, ¿cómo puedo resolver este problema para que el procesamiento en la página sea el mismo? Puedo tener el token y redirigir a la página de inicio.
Aquí está el código,
Aplicación.js
function App(){ return( //All other route codes <Route exact render={() => getUserToken() ? <Redirect to="/home"/> : <Redirect to="/login"/> } /> ) }servicio.js
export const getUserToken = () => { const token = sessionStorage.getItem("token"); return token }apps.component.js
// To trigger the storage event listener on every page render useEffect(() => { localStorage.setItem("REQUEST_TOKEN",Date.now().toString()); localStorage.removeItem("REQUEST_TOKEN") },[]) // To get the token from opened tab and store them in newly opened tab session storage useEffect(() => { window.addEventListener('storage', () => { const tokenCreds = sessionStorage.getItem("token") if(event.key === "REQUEST_TOKEN" && tokenCreds){ sessionStorage.setItem("token",event.newValue) } }) },[])¿Hay alguna forma de obtener el token antes de que la nueva pestaña se muestre por completo para que pueda redirigir a la página de inicio?
¡¡¡Gracias por adelantado!!!