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!
javascript jquery mousemove keypress scroll idle
Commentami!