【问题标题】:Separate cookies of multiple windows分离多个窗口的cookies
【发布时间】:2021-05-21 20:45:24
【问题描述】:

我想写一个electron 应用程序,它基于多个窗口。

使用这个应用程序,我希望能够在不同的窗口中使用不同的角色登录到一个网络应用程序。

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

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

有人可以提供此功能的代码吗?

我知道this post,它解释了如何使用app.setPath()userData。不幸的是 userData 是应用程序全局的,而不是例如本地窗口。

如果我现在能够捕获每个BrowserWindow 的每个cookie-set 操作,我将能够使用app.setPath() 并根据窗口切换cookie 存储,那么就会触发陷阱。

【问题讨论】:

    标签: electron


    【解决方案1】:

    我确实找到了解决方案:

    首先创建一个分区。让它命名为SomeNameForMySession

    const partition = 'persist:SomeNameForMySession'
    

    然后在创建时将partition 传递给BrowserWindow

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

    如果另一个BrowserWindow 得到另一个名称为另一个partition,则窗口具有完全分离的cookie。 如果另一个BrowserWindow 得到相同的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 )
    })
    

    【讨论】:

      猜你喜欢
      • 2019-11-13
      • 1970-01-01
      • 1970-01-01
      • 2015-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多