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');