javascript 会话cookie无法在电子中工作

8zzbczxx  于 2023-01-24  发布在  Java
关注(0)|答案(2)|浏览(106)

我正在考虑在一个电子[0]应用程序中实现一个登录系统,我正在构建这个应用程序,但是在处理会话的部分遇到了麻烦。基本上,我想存储用户的会话,以便在应用程序重新启动之间保持它(如果启用了“记住我”)。
我不得不使用一个现有的后端,它与cookie身份验证,我不能改变那里的任何东西。
从关于Session对象的电子文档[1]中,我了解到我应该使用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](http://electron.atom.io)
[1][http://electron.atom.io/docs/api/session/](http://electron.atom.io/docs/api/session/)

zwghvu4y

zwghvu4y1#

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

3phpmpom

3phpmpom2#

我的应用程序在Firefox中设置了Cookie,但在电子版中没有。我检查了一下,它在Chrome中也没有设置Cookie。
Chrome/Electron的问题是我设置了SameSite =“无”。
我在Electron和Chrome中将此更改为SameSite ='Lax'很有效。我不得不在我的express会话cookie设置中配置此设置。希望这对某人有所帮助,祝你有美好的一天!

相关问题