Electron实现多窗口cookie隔离与踩坑

5,530 阅读1分钟

背景

业务层面需要实现多窗口多账号同时登陆,且cookie和缓存互不影响。

常规是通过下载多个浏览器,且打开无痕模式实现的,比较恶心。

而Electron有能力实现这个场景。


前置文章

vue+Electron开发桌面应用


正文

我们先从文档下手,因为是打开新窗口相关,肯定先从【BrowserWindow】下面找,然后我们可以找一个【webPreferences.session】的属性,它是直接与缓存相关的。

www.electronjs.org/docs/api/br…

截屏2021-03-25 14.27.11.png

但是小伙伴们也可以发现,【session】与【partition】相关,且描述非常奇怪,我没有看懂,也没有配置的例子。 于是我开始了google之旅,终于在一个问题里找到大佬的回答: stackoverflow.com/questions/5…

截屏2021-03-25 14.34.11.png

简介明了,且就一句话:

You should specify a different (persisted or not persisted) partition for each browserwindow.

你应该为每一个窗口指定一个不同的分割字符串。(注意!必须是字符串!)

我的窗口配置如下:

// 这里我使用了时间戳字符串,如果unique_random_path是数字,将不生效
let unique_random_path = new Date().getTime() + ''
const win = new BrowserWindow({
width: 1200,
height: 1000,
webPreferences: {
webSecurity: false,
partition: unique_random_path,
nodeIntegration: true,
},
})

相关文章

Electron实现在线更新(全量)与踩坑

End