2012-03-14 44 views
1

我開發一個Chrome擴展當用戶需要與我們的服務器每次使用延長時間驗證。我試圖實現「記住我」功能,一旦用戶輸入憑證,該擴展程序將永遠記住它。我遇到的問題是,Chrome會將憑據與用戶所在的當前網站相關聯。鉻 - localStorage的 - 存儲值提供跨越所有URL

現在,如果用戶在他們在google.com憑證進入,系統將只記得他們在google.com憑證,而不是wikipedia.org。我想要發生的是他們的憑據將在所有領域被記住。

要閱讀的憑據:

username = localStorage["username"]; 
password = localStorage["password"]; 

要保存憑證:

localStorage["username"] = username; 
localStorage["password"] = password; 

要檢查是否存在其憑據:

if (localStorage["username"] != "") {...} 

回答

2

在Chrome擴展,內容腳本在與網頁相同的進程和相同的域中運行(例如https://www.google.com)。同時,任何擴展彈出窗口和後臺頁面,在「擴展名」的進程中運行,並分享獨特的產地(如「eakjnniffhfegdpfehmnpcmjiameincp」)。因此,當您從內容腳本訪問localStorage["username"]時,您實際上正在訪問屬於例如內容的localStorage https://www.google.com

所以,如果你想在你的分機不同內容的腳本之間共享信息,你需要在localStorage存儲後臺頁面上的數據,並通過調用chrome.extension.sendRequestchrome.extension.connect從內容的腳本給它發送消息。或者,通過調用chrome.tabs.sendRequestchrome.tabs.connect將消息從後臺頁面發送到內容腳本。

順便說一句,你可能需要重新考慮,似乎假設用戶在google.com和維基百科相同的密碼,你的數據模型。

+0

感謝您指點我在正確的方向:) – Jon 2012-03-14 04:18:50

+0

此外,有沒有辦法確保存儲在localStorage中的數據即使在選項卡關閉,瀏覽器退出或計算機關閉後也不會被刪除? – Jon 2012-03-14 04:25:38

+0

除非有人卸載擴展程序,否則localStorage不會被清除。 – yonran 2012-03-14 14:24:43