2013-07-30 3 views
1

Je recherche une bibliothèque JS côté client pour stocker les variables de session.Bibliothèque de sessions JS côté client

Je voudrais une bibliothèque qui supporte un support de stockage alternatif, par ex. les cookies lorsqu'ils sont disponibles avec repli sur d'autres techniques. Par exemple, j'ai trouvé celui-ci (mais la dernière mise à jour en 2009): http://code.google.com/p/sessionstorage/

Je ne suis pas intéressé à la sécurité (à part un peu d'isolement de données entre les applications), comme je ne vais pas stocker données sensibles. Pour donner un exemple de cas d'utilisation, je souhaite afficher un message "Utilisateur Chrome? Télécharger l'application" pour les utilisateurs de Chrome, et je souhaite conserver un statut en cours de session pour éviter d'afficher à nouveau le même message utilisateur. Je ne veux pas de sessions côté serveur car la mise en cache est activée. Je dois donc pouvoir diffuser exactement la même page à différents utilisateurs.

Répondre

2

Vous pouvez utiliser localStorage si elle est disponible, et si elle est pas, en utilisant des cookies (ou tout ce que vous sentez):

var appToken = createToken(); 
try { 
    if (localStorage.getItem) { 
     localStorage.downloadAppAlert = appToken; 
    } else { 
     setCookie('downloadAppAlert', appToken, 10); // name, a string value, num. of days 
    } 
} catch(e) { 
    console.log(e); 
} 

Ensuite, vous pouvez utiliser une fonction pour définir vos cookies - à savoir ce que je viens trouvé dans w3schools:

function setCookie(c_name,value,exdays) 
{ 
    var exdate=new Date(); 
    exdate.setDate(exdate.getDate() + exdays); 
    var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString()); 
    document.cookie=c_name + "=" + c_value; 
} 

Pour récupérer une valeur de cookie par son nom - downloadAppAlert dans l'exemple - vous pouvez utiliser celui sur le lien W3Schools ou quelque chose comme ceci:

function readCookie(name) { 
    var nameEQ = name + '='; 
    var ca = document.cookie.split(';'); 
    for(var i=0;i < ca.length;i++) { 
    var c = ca[i]; 
    while (c.charAt(0)==' ') c = c.substring(1,c.length); 
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); 
    } 
    return null; 
} 

Aussi, pour récupérer un élément setted précédemment sur la localStorage vous simplement:

var appToken = localStorage.getItem('downloadAppAlert'); 

EDIT: Désolé, les hâtes j'oublié de mentionner ce que createToken() fait. Il est supposé être une fonction de générateur alphanumérique aléatoire. Vous pouvez trouver beaucoup sur le SO, comme:

Random alpha-numeric string in JavaScript?

Generate random string/characters in JavaScript

Generating (pseudo)random alpha-numeric strings

+0

Merci pour la réponse détaillée. Je cherchais en fait plus à une bibliothèque qui résume de moi le choix parmi LS/cookies/autre chose ... – ecesena

+0

bien, j'espère que cela aide au cas où vous ne pourriez pas trouver une bibliothèque déjà construite pour vos besoins. Quoi qu'il en soit, à mon humble avis, l'ajout d'une bibliothèque pour ce problème particulier, sans avoir besoin d'un niveau de sécurité, n'est pas nécessaire. – TMichel

Questions connexes