Aquí tengo una parte de un código, en el que necesitaba iniciar sesión en la aplicación, y estoy almacenando el token tanto en el almacenamiento local como en el de la sesión para que pueda manejarse durante el evento beforeunload , el almacenamiento en la sesión ayudará durante la actualización y local para compartir datos con múltiples pestañas para que no tenga que iniciar sesión cada vez que abra una nueva pestaña.
Pero el problema al que me enfrento es...
La solución que necesitaba es -
Código
useEffect(() => { window.addEventListener("beforeunload",() => { localStorage.removeItem("token") let loggedIn = localStorage.getItem('token'); let sessionLoggedIn = sessionStorage.getItem('token'); if(!loggedIn) { if(sessionLoggedIn) { localStorage.setItem('token', JSON.parse(sessionLoggedIn)); //go to authenticated space window.location.href = '/authenticated'; } else { //go to login window.location.href = '/login'; } } else { //go to authenticated space window.location.href = '/authenticated'; } }) })Al iniciar sesión: almaceno el token con el valor de cadenas aleatorias tanto en el almacenamiento local como en el de la sesión cuando el usuario inicia sesión en la aplicación.
Mi requisito completo es -
Si alguna otra implementación para reemplazar este método también es muy apreciable
¿Puede alguien guiarme sobre cómo lograr mi requisito? ¡Un millón de gracias!
Tanto los objetos localStorage como sessionStorage son del origen actual. Cada pestaña de un navegador tiene un origen diferente (a menos que estén navegando en el mismo sitio) y los objetos de sesión/almacenamiento local serán únicos para estas pestañas.
Sin embargo, si ambas pestañas ejecutan scripts que usted controla, es posible compartir los datos de almacenamiento entre pestañas mediante una API como BroadcastChannel .
var bc = new BroadcastChannel('share_storage'); bc.postMessage(window.sessionStorage);