首页 > 解决方案 > 为每个 BrowserWindow 对象创建一个新会话的能力?

问题描述

在我的 JS 类构造函数中,我有一个变量。

this.cookieBrowser = new BrowserWindow({ show: true, webPreferences: { webSecurity: false } });

然后我在一个函数中调用该变量来创建一个新窗口......这工作得很好......但是,对于我正在运行的每个任务(子进程),cookie/会话数据是相同的 - 但我需要每个浏览器都有不同的会话。

我想知道是否有任何方法可以完成此任务,因为每个对象当前都返回完全相同的 cookie 集。

每次我使用以下方法调用函数时,我都尝试清除会话:

    that.cookieBrowser.webContents.session.clearStorageData([], await function (data) {

    })

这似乎只是暂时清除 cookie - 从长远来看,所有 cookie 仍然相同。

标签: node.jsgoogle-chromesessionelectron

解决方案


您应该为每个浏览器窗口指定不同的(持久或非持久)分区。

    this.cookieBrowser = new BrowserWindow({
        show: true,
        webPreferences: {
            webSecurity: false,
            partition: 'unique_random_path' // OR  'persist:unique_random_path' to save session on disk 
        } 
    });

    this.cookieBrowser2 = new BrowserWindow({
        show: true,
        webPreferences: {
            webSecurity: false,
            partition: 'unique_random_path2' // OR  'persist:unique_random_path2' to save session on disk 
        } 
    });

您可以通过将会话对象传递给webPreferences.

在这里查看所有browserWindow 选项以及sessionpartition属性之间的区别。


推荐阅读