2016-07-08 9 views
7

Ich bin auf der Suche nach der Implementierung eines Login-Systems in einer Electron [0] -Anwendung, die ich baue, aber auf der Seite der Sitzung Sitzung stecken bleiben. Grundsätzlich möchte ich die Benutzersitzung speichern, so dass sie zwischen Neustarts der Anwendung beibehalten wird (wenn "Remember me" aktiviert ist).Session-Cookies funktionieren nicht in Electron

Ich muss ein vorhandenes Back-End verwenden, das mit der Cookie-Authentifizierung funktioniert, und ich kann dort nichts ändern.

Aus der Electron-Dokumentation auf dem Session-Objekt [1] habe ich festgestellt, dass ich eine Partition wie zB verwenden sollte. persist:someName, um einen dauerhaften Speicher zu haben, aber dies wird nicht zwischen den Neustarts von Anwendungen beibehalten, wie es scheint.

So wie ich das Cookie momentan eingestellt ist wie folgt:

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

dies nach dem Ausführen, ich sehe die Cookie set Ausgang, aber bei einem Neustart der App und läuft den folgenden 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); 
    } 
}); 

Die zurückgegebene Ausgabe ist [].

Irgendwelche Hinweise darauf, was ich falsch mache oder anders machen müsste, wären sehr willkommen!

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

+2

Nach dem Blick in das Problem einige mehr scheint es ein Problem mit Electron Releases nach 1.2.2, wie in diesem Thread auf GitHub hingewiesen: https://github.com/electron/electron/issues/6388 – Revell

+0

1 .: Überprüfen Sie Ihren Import, ich stelle mir vor "require ('electron')" könnte einige Probleme verursachen. 2 .: Sie könnten stattdessen die localStorage API ausprobieren. –

+0

@JensHabegger Ja, das war ein Tippfehler im Skript hier, sorry In der Zwischenzeit stellte sich heraus, dass dies ein Problem in Electron war und ich warte auf eine neue Version mit dem Update, das verfügbar sein wird. – Revell

Antwort

0

Eine Alternative könnte einen Blick auf electron-json-storage zu nehmen. Mit diesem Plug-in können Sie JSON während der gesamten Benutzerumgebung in eine Systemdatei schreiben und dann diese Datei beim Laden der Anwendung abrufen, um den Status "Benutzer" zu ersetzen.