将多个 windows 的 cookie 分开

Separate cookies of multiple windows

我想写一个 electron 应用程序,它基于 windows.

使用此应用程序,我希望能够以不同 windows 中的不同角色登录网络应用程序。

因此,我需要一个功能来将 cookie 存储在应用程序的不同 windows 的不同位置。 HTML,window A 的 JS 代码和 cookies 数据应该 看不到 windows B 的数据。

或者,我可以想象以某种方式捕获设置 cookie 请求 并将它们保存在内存中,因此不在 HD 上使用应用程序全局 cookie 存储.

Could someone provide code for this feature?

我知道 userData, which explains how to app.setPath()。不幸的是 userData 是应用程序全局的,而不是例如window本地。

如果我现在能够捕获每个 BrowserWindow 的每个 cookie-set 操作,我将能够使用 app.setPath() 并根据 [=44] 切换 cookie 存储=], 陷阱被解雇了。

我确实找到了解决方案:

首先创建一个分区。将其命名为 SomeNameForMySession :

const partition = 'persist:SomeNameForMySession'

然后在创建时像这样传递 partition to a BrowserWindow

var ctrlWindow = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
        partition: partition
    }
})

如果另一个 BrowserWindow gets another partition 有另一个名字,windows 有完全分离的 cookie。 如果另一个 BrowserWindow gets the same partition,windows 共享 cookie 存储。

使用它,您可以例如跟踪在指定分区会话中发生的 cookie 事件:

// First find the correct session based on the partitions name
const ses2 = session.fromPartition( partition2 )

// Then, add a listener
ses2.cookies.addListener( 'changed', function ( event, cookie, cause, removed ) {
    console.log('COOKIE: ' + cookie.name + ' :: ' + cookie.value )
})