Implementé la funcionalidad de inicio de sesión mediante la autenticación de cookies personalizada y funciona bien.
Cuando estoy cerrando sesión desde una pestaña, está funcionando, una vez que lo use, cierre la sesión, el usuario se redirigirá a la pantalla de cierre de sesión. pero cuando he abierto más de una pestaña, el usuario aún puede acceder a las páginas en otra pestaña.
Si actualizo la página en otra pestaña, el usuario se está desconectando.
Solo funciona si actualizo manualmente la página, ¿cómo puedo cerrar la sesión del usuario sin actualizar la página?
¿Cómo puedo actualizar el estado de la aplicación?
En Blazor, cada pestaña se ejecuta en un Id. de sesión de Blazor diferente. Por lo tanto, incluso cuando cierre la sesión, no cerrará automáticamente la sesión del resto de la pestaña abierta. Es el comportamiento esperado. Todos usan el mismo objeto pero con diferentes identificadores de sesión. Por lo tanto, cualquier cambio que ocurra en una de las pestañas no se reflejará en las demás. Una forma de comunicarse entre varias pestañas es usar el almacenamiento local. Es el lugar que todas las pestañas del navegador comparten comúnmente.
En mi aplicación Blazor actual, he hecho algo similar. Después de iniciar sesión, agregué un par clave-valor (por ejemplo, fecha y hora) en el almacenamiento local del navegador. Además, se registra un setInterval(), que rastrea la actividad del usuario. También comprueba la clave añadida en el momento del inicio de sesión. Salga de cualquiera de las pestañas retire la clave. Cuando otras pestañas del navegador no encuentran esa clave, redirigen a la página de inicio de sesión.