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!




Share

Commentami!

About Mattepuffo.com

Blog dedicato all'informatica e alla programmazione!
Tutti i contenuti di questo blog, tranne casi particolari, sono sotto licenza Licenza Creative Commons Creative Commons Attribution-Noncommercial-Share Alike 2.5. .

2690 articoli
310 commenti
19 progetti
Altri link
  • About
  • Scrivimi
  • Copyright
  • Sitemap
  • matteo.ferrone@yahoo.it
  • GitHub
  • Privacy Policy