¿Cómo diferencia Angular entre el evento de actualización y el evento de cerrar navegador/cerrar pestaña?
Traté de escuchar el evento antes de descargarlo, pero descubrí que este evento se activa si actualizo la página web o cierro el navegador.
@HostListener('window:beforeunload', ['$event']) public beforeunloadHandler() { console.log('Click the refresh page button, or close the browser, this time will be called '); }El efecto deseado: necesito enviar una solicitud al cerrar el navegador: borrar el token en el lado del servidor, pero al actualizar la página web, no quiero activar la solicitud para borrar el token, ¿cómo puedo distinguir entre la actualización? evento de la página web y el evento de cierre del navegador?
La respuesta simple es que no puedes distinguirlos. Para el navegador, todos sus eventos de descarga (ya sea en realidad actualizar, cerrar la pestaña o cerrar el navegador).
Por esta razón, lo más común es que la sesión se mantenga activa actualizándola. Y cuando no recibe más actualizaciones después de cierto período, la sesión finaliza.
Haga que su backend mantenga vivo el token y haga que el frontend lo actualice (por ejemplo, al mover el mouse o al hacer llamadas http), cualquiera que sea la función que debe estar en el frontend que le permita saber al backend, el token debe mantenerse vivo.