Come chiamiamo servlet di logout sull’evento di chiusura del browser

Come posso gestire l’evento di chiusura di un browser per triggersre un logout?

Ho cercato una soluzione coerente a questo problema qualche tempo fa, e la mia decisione era di gestire la situazione senza credere al browser o all’utente.

Non puoi sicuramente sapere se un utente sta lasciando la tua pagina e quando, e anche se usi “onunload”, potresti non ottenere l’evento prima che il browser si chiuda o lasci la tua pagina. E i crash del browser non ti daranno alcun tipo di segnale, quindi credendo di sapere che l’utente sta ancora visualizzando la tua pagina e che potrebbero intraprendere ulteriori azioni è difettoso.

La cosa migliore che puoi fare per disconnettere un utente è impostare un timeout della sessione appropriato, e se hai bisogno di ulteriore controllo, puoi provare ad aggiungere chiamate AJAX su pagine critiche con segnali ‘I’m alive’, e poi disconnettendo utenti che non lo sono rispondere più (che richiederebbe il browser abilitato AJAX / JS e potrebbe escludere i potenziali utenti).

Stai cercando il onunload:

window.onunload = function() { // check the window is closed (see point 1 below) // do log out } 

Ci sono 2 problemi con questo:

  1. Viene chiamato ogni volta che l’utente si allontana dalla pagina, si aggiorna o generalmente scarica e quando viene chiusa la finestra del browser.
  2. Non sembra esserci un comportamento coerente tra i browser.

Raccomando di utilizzare un approccio diverso.

Devi andare con il timeout della sessione. Dal momento che hai taggato la tua domanda JSP, penso che sia un’applicazione web java di cui stai parlando.

In genere hai un listener di timeout di sessione e hai il codice di “disconnessione” nel listener.

Generalmente non fare affidamento sugli eventi lato client: un arresto anomalo del browser / sistema, l’arresto senza chiudere il browser ecc non innescherà gli eventi.