Chrome扩展如何实现浏览器关闭时自动清除临时存储的主密码
Chrome扩展运行时临时存储主密码的可行方案
你之前用sessionStorage失效的核心原因是普通Web APIsessionStorage的生命周期和扩展上下文、Chrome会话恢复策略绑定,如果你开启了Chrome「重启后恢复上次浏览的页面」的设置,扩展的sessionStorage数据会被Chrome自动恢复,因此无法做到浏览器关闭后自动清空。
最优方案:使用Chrome扩展专属chrome.storage.session API
这个API是Chrome扩展专门设计的运行时存储能力,天生满足「仅在浏览器运行期间留存,浏览器完全关闭后自动清空所有数据」的特性,不受用户会话恢复设置影响。
使用步骤:
- 首先在
manifest.json中声明storage权限:
{ "manifest_version": 3, "permissions": ["storage"], // 其余扩展配置 }
- 存储主密码的代码示例:
// 异步调用,支持await await chrome.storage.session.set({ masterPassword: userInputPassword })
- 读取主密码的代码示例:
const { masterPassword } = await chrome.storage.session.get("masterPassword") // masterPassword不存在时返回undefined,可用来判断是否需要弹出主密码输入框
备选方案:内存全局变量存储
如果你需要完全避免主密码写入任何磁盘缓存(包括浏览器可能的临时缓存),可以直接在扩展的后台服务工作线程(Manifest V3)/背景页(Manifest V2)中声明全局变量存储主密码:
// 后台上下文全局代码 let GLOBAL_MASTER_PASSWORD = null // 存储时赋值 GLOBAL_MASTER_PASSWORD = userInputPassword // 读取时直接调用 const currentPwd = GLOBAL_MASTER_PASSWORD
注意:Manifest V3的服务工作线程会在闲置几分钟后被系统自动回收,全局变量会被清空,如果你需要用户在浏览器运行期间不需要重复输入主密码,不建议使用该方案。
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

