Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

262
Views
Cómo compartir datos de almacenamiento de sesión con otras pestañas abiertas del navegador en React

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...

  • Cuando inicio sesión en la aplicación y si abro una nueva pestaña al cargar la nueva pestaña, puedo ver que la aplicación inicia sesión, pero cuando actualizo, vuelve a la página de inicio de sesión, ya que verifiqué que no hay ningún token en la sesión. almacenamiento, por lo que mientras se actualiza la página se cierra la sesión.

La solución que necesitaba es -

  • Cómo obtener los datos del almacenamiento de sesión de la pestaña de inicio de sesión y enviarlos a todas las pestañas recién abiertas, he visto algo como que podemos almacenar eventos o transmitir API , pero realmente no sé cómo implementarlos en reaccionar y dónde implementar en este código

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 -

  • Después de que un usuario inicie sesión en el sitio en cualquier pestaña, si navega al sitio en una nueva pestaña, ya debe haber iniciado sesión
  • Cuando un usuario cierra sesión en cualquier pestaña, debe cerrar sesión en todas las pestañas inmediatamente
  • Un usuario puede actualizar la página y permanecer conectado
  • Una vez que se cierran todas las pestañas, el usuario se desconecta y debe volver a iniciar sesión

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!

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

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);
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!