我正在开发Chrome扩展程序,用户每次使用扩展程序时都需要使用我们的服务器进行身份验证。我正在尝试实现“记住我”功能,一旦用户输入凭据,扩展程序将永远记住它。我遇到的问题是Chrome会将凭据与用户所在的当前网站相关联。
现在,如果用户在google.com上输入他们的凭据,系统将只记住他们在google.com上的凭据,而不是wikipedia.org。我想要发生的是,他们的凭据将在所有域中被记住。
阅读凭据:
username = localStorage["username"];
password = localStorage["password"];
存储凭据:
localStorage["username"] = username;
localStorage["password"] = password;
检查其凭据是否存在:
if ( localStorage["username"] != "" ) {...}
答案 0 :(得分:2)
在Chrome扩展程序中,内容脚本在与网页相同的进程和相同的域(例如https://www.google.com)中运行。同时,任何扩展弹出窗口和后台页面在“扩展”过程中运行并共享唯一的起源(例如“eakjnniffhfegdpfehmnpcmjiameincp”)。因此,当您从内容脚本访问localStorage["username"]
时,您实际上正在访问属于例如内容脚本的localStorage。 https://www.google.com
因此,如果您希望在扩展程序中的不同内容脚本之间共享信息,则需要将数据存储在localStorage
的后台页面上,并通过调用{{3}将内容脚本中的消息发送给它}或chrome.extension.sendRequest
。或者,通过致电chrome.extension.connect
或chrome.tabs.sendRequest
,从后台页面向内容脚本发送消息。
另外,您可能需要重新考虑您的数据模型,该模型似乎假设用户在google.com和维基百科上拥有相同的密码。