JavaScript: impostare e controllare la scadenza dei dati nel web storage

JavaScript: impostare e controllare la scadenza dei dati nel web storage

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

Torna su