Il web storage non ci permette al momento di controllare la scadenza dei dati con JavaScript.
In PHP una sessione ha una scadenza predefinita. Possiamo emulare questa scadenza in JavaScript:
'use strict';
class Session {
constructor({ storageType }) {
this.storage = storageType;
}
create({ key, value, expires }) {
if(this.storage.getItem(key) === null) {
const expiration = Date.now() + expires;
this.storage.setItem(key, JSON.stringify([value, expiration]))
}
}
check(key) {
if(this.storage.getItem(key) !== null) {
const item = JSON.parse(this.storage.getItem(key));
const now = Date.now();
const expires = parseInt(item[1], 10);
if(expires < now) {
this.storage.removeItem(key);
}
}
}
}
Ciascuna chiave viene associata alla sua scadenza salvando i dati come array JSON nel web storage di riferimento. La verifica viene quindi effettuata confrontando i due timestamp Unix ottenuti. Esempio d'uso:
const session = new Session({
storageType: localStorage
});
const keyExpires = 1000 * 60 * 60 * 60; // 1 ora
session.create({
key: 'test',
value: 'Hello',
expires: keyExpires
});
session.check('test');