Autologout in jQuery

Mattepuffo's logo
Autologout in jQuery

Autologout in jQuery

Purtroppo con alcuni utenti (che ha detti utOnti??) un controllo lato server non basta.

Quindi ho impostato anche un controllo lato client; ma controllo di cosa?

Sull'inattività sulle pagine!

E l'ho fatto usando jQuery; qui sotto il codice commentato:

let wait = 60000; // Intervallo di controllo - 1 minuto
var idleTime = 0; // Tempo di inattività
var timeLogout = 9; // Massimo tempo di inattività prima del logout
let pageLogout = 'logout.php'; // Pagina di logout

$(document).ready(function () {
    setInterval(checkTimer, wait);

    $(this).mousemove(function (e) {
        logout();
    });

    $(this).keypress(function (e) {
        logout();
    });

    $(this).scroll(function (e) {
        logout();
    });
});

// Incremento il tempo di inattività
function checkTimer() {
    idleTime = idleTime + 1;
    // Se l'inattività è maggiore del tempo massimo, rimando alla pagina di logout
    if (idleTime > timeLogout) {
        window.location.href = pageLogout;
    }
}

// Controllo se devo fare il logout
function logout() {
    // Se l'inattività è maggiore del tempo massimo, rimando alla pagina di logout
    if (idleTime > timeLogout) {
        window.location.href = pageLogout;
    }
    // Sennà resetto il tempo di inattività
    idleTime = 0;
}

Il codice è commentato e comunque abbastanza semplice.

Il controllo viene fatto sia ogni minuto in automatico, sia quando intercetto tre eventi:

  • mousemove
  • keypress
  • scroll

In questo modo blindiamo la pagine, ed evitiamo di fare compiere le azioni agli utenti.

Infatti basta già che muovano il mouse per capire se il sito è inattivo da troppo tempo.

Ovviamente questo deve essere aggiunto anche ai controlli lato server; se disabilitano Javascript nel browser, non avete più controlli.

Enjoy!


Condividi

Commentami!