0

我正在构建一个扩展,每次浏览器打开时都会要求用户输入强密码。其目的是在注册时使用该密码为新网站派生和生成强密码,并在用户下次访问已访问的网站时尝试重新生成相同的密码。我正在使用以下方法存储用户的主密码(用于密码生成),这是敏感信息:

window.sessionStorage.setItem(varName)

我使用以下方法在需要时获取它。

sessionStorage.getItem(varName)

我的问题是,只要 Chrome 打开,我希望存储在浏览器数据中的这些数据有效。每次用户关闭浏览器时都需要清除此主密码,并在每次重新打开浏览器时询问。我读到会话存储是临时的,它会被清除,但它不适用于我的扩展。我也知道没有什么可以添加来检测浏览器在停止运行脚本时关闭。你能帮我吗?有没有这种方法可以在短时间内保存数据?

4

1 回答 1

0

由于 Manifest V3 删除了持久背景页面的概念。你可以用chrome.storage.local来模仿。唯一需要注意的是,它将变量存储在扩展本地存储中,这对该用户来说仍然可以。

模拟浏览器关闭的一种方法是创建一个打开的chrome.runtime.port,然后当浏览器关闭或重新加载扩展程序时,它将调用onDisconnect该端口,您可以清除chrome.storage.local.clear()

chrome.runtime.onConnect.addListener(port => port.onDisconnect.addListener(() => chrome.storage.local.clear()))

当浏览器启动时,只需连接:

chrome.runtime.connect(null, {})

当后台脚本重新进入睡眠状态时,这可能会自行卸载,不幸的是,唯一通过的方法是保持您自己的托管扩展窗口弹出。但这对于用户体验来说可能是多余的。

于 2021-05-24T08:47:29.727 回答