Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Session cookies not working in Electron

I'm looking at implementing a login system in an Electron[0] application which I'm building but getting stuck on the part of handling the session. Basically I want to store the users session so it is persisted between application restarts (if "Remember me" is enabled).

I have to make use of an existing back-end which works with cookie authentication and I'm not able to change anything there.

From the Electron documentation on the Session object[1] I gathered that I should be using a partition like f.e. persist:someName in order to have a persistent storage, but this is not persisted between application restarts as it seems.

The way I currently set the cookie is as follows:

// 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);
    }
});

After running this, I see the Cookie set output, but when restarting the app and running the following code:

// 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);
    }
});

The output returned is [].

Any pointers as to what I'm doing wrong or need to do differently would be highly appreciated!

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

like image 576
Revell Avatar asked Jul 08 '16 07:07

Revell


1 Answers

An alternative might be to take a look at electron-json-storage. Using this plugin, you can write JSON to a system file throughout the user experience and then recall that file on the application load to replace the user "state".

like image 133
Sators Avatar answered Oct 03 '22 09:10

Sators