簡體   English   中英

客戶端JS會話庫

[英]Client-side JS session library

我正在尋找一個客戶端JS庫來存儲會話變量。

我想要一個支持替代存儲介質的庫,例如可用於其他技術的回退的cookie。 例如,我找到了這個(但最后一次更新是在2009年): http//code.google.com/p/sessionstorage/

我對安全性不感興趣(除了應用程序之間的一些數據隔離),因為我不打算存儲敏感數據。

舉一個用例示例,我想為Chrome用戶顯示一條消息“Chrome用戶?下載應用”,我希望在會話中保持狀態,以避免再次向同一用戶顯示該消息。 我不希望服務器端會話因為我啟用了緩存,所以我必須能夠為不同的用戶提供完全相同的頁面。

您可以使用localStorage如果可用),如果不可以,則使用cookie(或您感覺到的任何內容):

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

然后你可以使用一些功能來設置你的cookie - 即我剛剛在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;
}

要通過它的名稱檢索cookie值 - 在示例中下載 AppAlert - 您可以使用w3schools鏈接上的那個或類似的東西:

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;
}

此外,要在localStorage上檢索以前設置的項目,您只需:

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

編輯:對不起,我趕緊提到createToken() 它應該是一個隨機的字母數字生成器函數。 您可以在SO上找到很多,例如:

JavaScript中的隨機字母數字字符串?

在JavaScript中生成隨機字符串/字符

生成(偽)隨機字母數字字符串

使用mozilla的node-client-sessions( https://github.com/mozilla/node-client-sessions )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM