es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cerrar la sesión de un usuario cuando cierre el navegador React JS Cognito

Estoy utilizando ReactJS como mi front-end, con una API de Python Flask en el backend. Tengo un problema en mi aplicación tal como está ahora: cuando mis usuarios cierran el navegador, no se cierra su sesión (a menos que el token de actualización de Cognito haya expirado).

Sin embargo, he leído que el token de actualización no debería caducar en un corto período de tiempo, y en Cognito tiene un mínimo de 60 minutos.

También he probado y no me ha gustado la función onUnload del ventana, ya que (A) solo funciona en la primera ventana / pestaña que abres para la aplicación y (B) las recargas también activan la función onUnload.

Actualmente estoy considerando la opción de hacerlo en mi backend, es decir, registrar la última vez que tuve noticias del usuario y cerrar su sesión después de 15 minutos si no he recibido ninguna llamada a la API para obtener datos. Sin embargo, esto parece plantear sus propios problemas (por ejemplo, no todos los usuarios estarán actualizando la página y buscando datos en la ventana de 15 minutos, pero podría resolver eso con la función onActive (tengo un temporizador de inactividad) cada vez que el usuario realiza una acción, le envío una solicitud a mi API para que reinicie mi temporizador). El otro problema principal es que no sé cómo cerrar la sesión de alguien remotamente en su sesión en Cognito sin tener acceso a su nombre de usuario y contraseña, lo cual parece un problema de seguridad.

Agradecería cualquier tipo de ayuda.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Opciones para cerrar la sesión del navegador y cerrar sesión en Cognito

    Como experto en TI especializado en ReactJS y Amazon Cognito, hay varias opciones que considerar para cerrar la sesión de la aplicación cuando el usuario cierra su navegador. El token de actualización de Cognito tiene un tiempo de caducidad mínimo de 60 minutos, lo cual puede no ser ideal en algunos casos, ya que los usuarios pueden permanecer conectados durante un período prolongado incluso después de cerrar su navegador.

    Un enfoque a considerar es rastrear la última llamada de API del usuario y cerrar la sesión automáticamente si no hay actividad durante un cierto período. Esto se puede implementar en el backend, y se puede configurar un temporizador de inactividad para reiniciar el temporizador cada vez que el usuario realiza una acción. Sin embargo, este enfoque puede tener limitaciones, especialmente para usuarios que no actualizan la página ni usan activamente la aplicación dentro del marco de tiempo establecido.

    Otro enfoque posible a considerar implica utilizar el evento onUnload para desencadenar el cierre de sesión cuando el usuario cierra el navegador. Sin embargo, este método es limitado, ya que solo funciona en la primera pestaña o ventana abierta para la aplicación y también puede desencadenar el cierre de sesión en otros escenarios como la actualización de la página.

    Un desafío considerable al cerrar la sesión de Cognito es la necesidad de credenciales de usuario, lo cual puede no ser factible en todos los escenarios. Por lo tanto, es necesario explorar alternativas para garantizar que las sesiones de usuario estén seguras incluso después de cerrar su navegador.

    En general, aunque hay opciones viables para cerrar las sesiones del navegador y cerrar la sesión de Cognito, la implementación dependerá de los requisitos y limitaciones únicas de cada escenario.

Comments are closed.