【问题标题】:how to use electron cookies in angular如何在角度中使用电子饼干
【发布时间】:2020-04-12 15:59:18
【问题描述】:

我正在使用电子,我想有条件地使用 cookie。如果它是电子应用程序,则使用 E​​lectron Cookie,否则使用 Angular Cookie。我在我的电子角度应用程序中声明 cookie 时遇到问题。

根据Electron's Cookie Document,我们需要使用require 声明它,但我想在.ts 文件中使用它

到目前为止,我已经尝试过

const { session } = require('electron');

declare function require(name:string); const { session } = require('electron');

import * from 'electron';

import * as session from 'electron';

所有方法在编译或停止脚本以在运行时执行时都会产生错误。

谁能帮助我并指导我如何在我的项目中使用 Electron-cookie。

【问题讨论】:

    标签: javascript node.js angular cookies electron


    【解决方案1】:

    你需要像这样的 webpreferences

    webPreferences: {
                    nodeIntegration: true,
                    webSecurity: true,
                    allowEval: false,
                    allowRunningInsecureContent: false,
                    contextIsolation: true, // protect against prototype pollution
                    enableRemoteModule: true, // turn off remote
                    preload: path.join(__dirname, "preload.js") // use a preload script
                },
    

    nodeIntegration 和 enableRemoteModulke 非常重要。 并在你的 preload.js 中创建一个窗口函数

    contextBridge.exposeInMainWorld(
        'session',
        {
            set: (cookie) => {
              remote.session.defaultSession.cookies.set(cookie).then(() => {
                console.log('Cookie Saved')
              }, (error) => {
                console.error(error)
              })
            },
            // Returns Promise<Cookie[]>
            get: () => {
               return remote.session.defaultSession.cookies.get({}).then((cookies) => {
                    console.log(cookies);
                    return cookies
                  }).catch((error) => {
                    console.log(error)
                  })
            },
        }
      )
    

    最后在你的 angular2+ 项目中执行这样的功能

    window['session'].get({}) || window['session'].set(cookie);
    

    【讨论】:

    • 理想情况下,这应该使用ipcRenderer 从主进程调用session.defaultSession.cookies API。 remote 最近从 Electron 中删除。这也有点误导,因为contextIsolation 没有关闭所以nodeIntegration: false 将不起作用(这就是为什么你需要使用contextBridge)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-21
    • 1970-01-01
    • 2016-09-21
    • 1970-01-01
    • 1970-01-01
    • 2015-07-06
    相关资源
    最近更新 更多