JavaScript: impostare una scadenza per il web storage

JavaScript: impostare una scadenza per il web storage

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:


var Session = {
		storage: sessionStorage,
		
		create: function() {
		  if(this.storage.getItem('test') == null) {
			this.storage.setItem('test', 'foo');
			var date = new Date();
			var minutes = date.getMinutes();
			this.storage.setItem('expires', minutes + 1);
		  }
			
		},
		
		retrieve: function() {
			var item = this.storage.getItem('test');
			return item;
		},
		destroy: function() {
			this.storage.removeItem('test');
		},
		check: function() {
		  if(this.storage.getItem('expires') !== null) {
			var d = new Date();
			var m = d.getMinutes();
			var expires = this.storage.getItem('expires');
			
			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. Esempio d'uso:


document.addEventListener('DOMContentLoaded', function() {
	Session.create();
	Session.check();
	document.getElementById('get').addEventListener('click', function() {
		var value = Session.retrieve();
		alert(value);
	}, false);

}, false);

Ovviamente nel caso del local storage possiamo impostare una scadenza in giorni.

Torna su