En nuestra aplicación Rails, es común que los usuarios mantengan múltiples pestañas del navegador abiertas durante horas o días a la vez. El problema ocurre cuando, en una de estas pestañas, el usuario cierra la sesión y luego inicia sesión nuevamente (o la sesión expira y se crea una nueva sesión).Cómo manipular páginas con tokens de autenticidad CSRF antiguos en Rails
Esto hace que los tokens de autenticidad CSRF en todas las demás pestañas se vuelvan inválidos. Si intentan enviar cualquier formulario o realizar alguna solicitud ajax en esas pestañas sin actualizar, obtendrán un error (y de hecho se cerrarán la sesión porque ese es el comportamiento predeterminado de Rails cuando se pasa un token de autenticidad incorrecto).
Este comportamiento es claramente indeseable. Me preguntaba qué hacen las personas para manejar con gracia situaciones en las que un usuario tiene una ventana abierta para su sitio, pero el token de autenticidad está desactualizado.
Lo que no quiero hacer es simplemente redirigirlos a la página de inicio de sesión, porque pueden perder su trabajo, por ejemplo, si han estado escribiendo una publicación de blog larga o algo así.
La solución que viene a la mente es tener algún javascript que sondee el servidor para verificar si el token de autenticidad ha cambiado, o sondea las cookies del usuario para verificar si la sesión ha cambiado. Nunca había escuchado que alguien hiciera ninguna de estas cosas, así que quería ver qué pensaba la comunidad.
Tiene razón, el inicio/cierre de sesión no está causando una nueva generación de token csrf. Parece que está de vuelta en el tablero de dibujo para descubrir de dónde vienen estos errores de tokens no válidos. – Jacob