会话 cookie 在 Electron 中不起作用
Posted
技术标签:
【中文标题】会话 cookie 在 Electron 中不起作用【英文标题】:Session cookies not working in 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 开发工具确认它不在窗口中? (在“应用程序”或“资源”选项卡下查看)。
【参考方案1】:
另一种方法可能是查看electron-json-storage。使用此插件,您可以在整个用户体验中将 JSON 写入系统文件,然后在应用程序加载时调用该文件以替换用户“状态”。
【讨论】:
以上是关于会话 cookie 在 Electron 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
按钮 onClick 事件侦听器在 Electron 应用程序中不起作用
如何解决 Vue.js devtools 在 Electron Vue 项目中不起作用的问题?