2012-03-14 42 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