Sia il local storage che il session storage non ci permettono al momento di controllare la loro scadenza. Di norma il session storage scade dopo che l'utente ha chiuso il browser ed il local storage a seconda delle impostazioni del browser. Tuttavia con un piccolo stratagemma mutuato da PHP possiamo ovviare a questo problema.
In PHP una sessione ha una scadenza predefinita. Possiamo emulare questa scadenza in JavaScript:
const Session = {
storage: sessionStorage,
key: 'test',
value: 'test'
create() {
if(this.storage.getItem(this.key) === null) {
this.storage.setItem(this.key, this.value);
const date = new Date();
const minutes = date.getMinutes();
this.storage.setItem('expires', minutes + 1);
}
},
retrieve() {
return this.storage.getItem(this.key);
},
destroy() {
this.storage.removeItem(this.key);
},
check() {
if(this.storage.getItem('expires') !== null) {
const d = new Date();
const m = d.getMinutes();
const expires = parseInt(this.storage.getItem('expires'), 10);
if((expires - m) === 0) {
this.destroy();
}
}
}
};
La chiave expires
ha il valore dei minuti presi dal timestamp corrente più uno. In questo modo la nostra sessione durerà 1 minuto.
Tutto quello che dobbiamo fare è controllare il tempo trascorso eseguendo una semplice sottrazione.