【问题标题】:Session cookies not working in Electron会话 cookie 在 Electron 中不起作用
【发布时间】:2016-11-10 16:26:16
【问题描述】:

我正在考虑在我正在构建的 Electron[0] 应用程序中实现登录系统,但在处理会话时遇到了困难。基本上我想存储用户会话,以便在应用程序重新启动之间保持它(如果启用了“记住我”)。

我必须使用与 cookie 身份验证配合使用的现有后端,但我无法在那里更改任何内容。

从有关 Session 对象[1] 的 Electron 文档中,我收集到我应该使用像 f.e. 这样的分区。 persist:someName 是为了拥有一个持久存储,但这并没有像看起来那样在应用程序重新启动之间持久化。

我目前设置cookie的方式如下:

// main-process/login.js

const session = require('electron').session;

const currentSession = session.fromPartition('persist:someName').cookies;

currentSession.set({
    name: 'myCookie',
    url: 'https://www.example.com',
    value: 'loggedin=1',
    expirationDate: 1531036000
}, function(error) {
    console.log('Cookie set');
    if (error) {
        console.dir(error);
    }
});

运行此程序后,我看到了Cookie set 输出,但是在重新启动应用程序并运行以下代码时:

// main.js

const session = require('electron').session;

const currentSession = session.fromPartition('persist:someName').cookies;

currentSession.get({}, function(error, cookies) {
    console.dir(cookies);
    if (error) {
        console.dir(error);
    }
});

返回的输出是[]

任何关于我做错了什么或需要采取不同做法的指针将不胜感激!

[0]http://electron.atom.io
[1]http://electron.atom.io/docs/api/session/

【问题讨论】:

  • 在进一步研究了这个问题之后,似乎这可能是 1.2.2 之后的 Electron 版本的问题,正如 GitHub 上的这个线程中所指出的那样:github.com/electron/electron/issues/6388
  • 1.:检查您的导入,我想“ require('electron'] ”可能会导致一些问题。2.:您可以查看 localStorage API。
  • @JensHabegger 是的,这是脚本中的错字,抱歉!与此同时,事实证明这是 Electron 中的一个问题,我正在等待带有此修复程序的新版本。
  • 根据我的经验,会话 API 充满了无法解释的行为。在我的应用程序中,我在创建窗口之前获取/设置 cookie,为了真正设置 cookie,我必须先设置它们,然后再次获取它们(如 session.cookies.get({}, () => {}))。没有意义,但它确实有效。
  • 您是否通过 Chrome 开发工具确认它不在窗口中? (在“应用程序”或“资源”选项卡下查看)。

标签: javascript node.js session cookies electron


【解决方案1】:

另一种方法可能是查看electron-json-storage。使用此插件,您可以在整个用户体验中将 JSON 写入系统文件,然后在应用程序加载时调用该文件以替换用户“状态”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-02
    • 1970-01-01
    • 2012-06-26
    • 1970-01-01
    • 2015-02-19
    • 2018-11-06
    • 2017-10-17
    相关资源
    最近更新 更多